为什么带括号但不带括号的弹性搜索查询给出不同的输出?

时间:2019-05-08 10:54:02

标签: elasticsearch lucene

我下面有2个弹性搜索查询

这给出5个结果

POST twitter/object/_search
{

 "_source": false,
 "query": {
   "query_string": {
     "query": "Apple AND Orange OR Banana",
     "default_field": "content"
    }
  }
}

这给出12个结果

POST twitter/object/_search
{

 "_source": false,
 "query": {
   "query_string": {
     "query": "(Apple AND Orange) OR Banana",
     "default_field": "content"
    }
  }
}

请帮助我说明为什么会这样。因为逻辑上两个查询都应提供相同的输出,所以该查询的解释方式为何?

1 个答案:

答案 0 :(得分:0)

来自https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-query-string-query.html#_boolean_operators

  

支持熟悉的布尔运算符AND,OR和NOT,但是   注意它们不遵守通常的优先规则,因此   每当使用多个运算符时都应使用括号   在一起。