我在Elasticsearch中遇到了NOT运算符问题。 我启动查询字符串查询并查找这些关键字:
plain~ AND NOT port~
我正在获取一个包含单词" plain" (没关系)但也有#34;机场" 这是正确的行为,我该如何排除这些复合词?
答案 0 :(得分:0)
是的,这是核心行为。请查看fuzzy operator的文档,尤其是fuzziness parameter values。
重点是模糊算子" 使用Damerau-Levenshtein距离找到最多两次更改的所有术语,其中更改是插入,删除或替换单个角色...... "
您的查询中的单词airport
不会被排除,因为它有两次以上的更改。
但是这个查询可行:
{
"query": {
"query_string": {
"fields" : ["description"],
"query": "NOT rport~2"
}
}
}
它会从结果中排除airport
。但是你不能将模糊因子增加到3,因为这不支持(因此"query": "NOT port~3"
不会起作用)。
您的需求听起来更像是Partial Matching
的案例之一