使用NOT运算符排除elasticsearch中的复合词

时间:2017-07-24 09:03:16

标签: elasticsearch

我在Elasticsearch中遇到了NOT运算符问题。 我启动查询字符串查询并查找这些关键字:

plain~ AND NOT port~

我正在获取一个包含单词" plain" (没关系)但也有#34;机场" 这是正确的行为,我该如何排除这些复合词?

1 个答案:

答案 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

的案例之一