“OR”在Elasticsearch中使用匹配短语前缀进行过滤

时间:2015-05-11 21:47:14

标签: elasticsearch

我想做一个Elasticsearch查询,其中我想做一个OR过滤器

想象我有这种文件

[ {name : "John Doe"}, {name :"Jane Doe"}, {name:"Steve Doe"} ]

使用此SQL查询执行相同操作的查询

SELECT * from table WHERE name LIKE 'Ja%' OR name LIKE 'Jo%'

现在我正在使用elasticsearch的match_phrase_prefix作为LIKE,但我完全坚持使用OR。

由于

1 个答案:

答案 0 :(得分:2)

您可以使用bool should查询来实施OR操作。实际上,您可以使用prefix查询代替match_phrase_prefix查询您所描述的内容。无论如何,如果您仍然找到match_phrase_prefix查询的用例,只需使用prefix查询替换下面请求中的match_phrase_prefix查询。

{
  "query": {
    "bool": {
      "should": [
        {
          "prefix": {
            "name": {
              "value": "ja"
            }
          }
        },
        {
          "prefix": {
            "name": {
              "value": "jo"
            }
          }
        }
      ]
    }
  }
}