【问题标题】:Optional terms in match_phrase elasticsearchmatch_phrase elasticsearch 中的可选术语
【发布时间】:2018-08-22 13:27:39
【问题描述】:

我正在使用 elasticsearch 6 并有以下查询

{  
 "query":{  
  "bool":{  
     "should":[  
        {  
           "match_phrase":{  
              "fieldOne":{  
                 "query":"One two three",
                 "slop":10
              }
           }
        },
        {  
           "match_phrase":{  
              "fieldTwo":{  
                 "query":"one two three",
                 "slop":10
              }
           }
        }

     ]
  }
 }
}

当我想将两个字段与查询中的术语进行匹配时,这很有效。

但是,如果我的文档在 fieldOne 中包含术语“一”和“二”,则上述内容不会返回结果,因为需要“三”

我似乎找不到使查询中的术语可选的方法,例如我想说的是在这两个领域中找到任何术语

我选择 match_phrase 的原因是使用了 slop,它允许术语在我也需要的字段中的不同位置

【问题讨论】:

    标签: elasticsearch elasticsearch-6


    【解决方案1】:

    如果使用顺序不重要,则无需使用match_phrase,一个简单的match 查询即可完成工作

        {  
           "match":{  
              "fieldOne":{  
                 "query":"one two three"
              }
           }
        },
    

    如果您需要至少两个词来匹配,您可以使用minimum_should_match

        {  
           "match":{  
              "fieldOne":{  
                 "query":"one two three",
                 "minimum_should_match": 2
              }
           }
        },
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多