我想进行类似查询-获取给定字段包含/不包含“某些值”的所有文档 -获取给定字段的所有值等于/不等于“某个值”的文档。
根据我的映射,这些字段为字符串类型,这意味着它们支持关键字搜索和全文搜索,例如:
"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