在must bool查询中使用Regexp Search与must_not bool查询

时间:2019-12-19 13:18:20

标签: elasticsearch

我想进行类似查询-获取给定字段包含/不包含“某些值”的所有文档 -获取给定字段的所有值等于/不等于“某个值”的文档。

根据我的映射,这些字段为字符串类型,这意味着它们支持关键字搜索和全文搜索,例如:

"myField" : {
              "type" : "text",
              "fields" : {
                "keyword" : {
                  "type" : "keyword",
                  "ignore_above" : 256
                }
              }
            }

我最初是使用正则表达式匹配之类的(此查询不匹配):

"bool": {
  "must":[
    {
     "regexp": {
               "myField.keyword": {
                 "value": "~(some value)",
                 "flags": "ALL"
                }
           }
      }
    ]
}

因此,基本上~(word)代表不包含,.*word.*代表包含,~(.*word.*)代表不包含。

但是,随后还遇到了'must_not'布尔查询,因此我知道我也可以为'不等于个案'子句以及'must'和'should'子句添加一个'must_not'(用于布尔AND和OR在更大的布尔查询中,但仍然不确定包含和不包含搜索,有人可以明确解释一下,就性能和返回结果集的准确性而言,这里的最佳实践是什么。

使用的ElasticSearch版本-当前从v 6.3过渡到v 7.1.1

0 个答案:

没有答案