2016-06-08 70 views
0

在Elasticsearch文档,它说“或查询”已过时,使用“布尔”查询,而不是:https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-or-query.html如何在Elasticsearch中的“bool”查询中创建逻辑“OR”?

但我不知道如何进行逻辑“或”使用“布尔”查询。我想:

query: { 
    bool: { 
     must: [ 
      { match: { title: 'some title'}}, 
      { match: { author: 'some author'}} 
     ] 
    } 
} 

这标题是“一些标题”和作者是“一些作者的比赛,但我怎么转换到这一个或表达?就像我希望它匹配标题是'某个标题'或作者是'某个作者'。谢谢!

回答

4

只需更换您必须应该和添加操作:

query: { 
    bool: { 
     should: [ 
      { match: { title: {query:'some title', operator: 'AND'}}, 
      { match: { author: {query: 'some author', operator: 'AND'}} 
     ] 
    } 
} 
+0

你能解释一下吗?应该和AND运算符做什么? – user3835653

+0

并用此添加“AND”,我使用“must”运算符?比如,如果我想要上面的逻辑,并且我想要其他逻辑,那么我应该使用'must'和'should'吗? – user3835653

+0

阅读文档可能很明智,他们很好地解释了这一点。但运营商和手段都需要一些和标题目前。在OR中,只有其中一个需要在场。在没有必要的情况下,至少有一个条件必须匹配。如果你想要另一个条件匹配,你可以添加一个必须。比你必须添加一个minimum_should_match到should部分。 https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-bool-query.html –