带AND OR运算符的布尔查询

时间:2017-08-06 13:05:25

标签: python elasticsearch

查询:National Public Radio\/TV

即匹配查询National Public RaidoNational Public TV。我想知道如何在elasticsearch中执行这样的任务? 任务以Python完成

我尝试过的事情:

布尔查询"国家公共广播"

from elasticsearch import Elasticsearch

es_conn = Elasticsearch(config.ES_HOSTS)

res = es_conn.search(index = config.INDEX_NAME,
      body={
              "_source": ["filename"],
              "query": {
                "match" : {
                  "text" : {
                    "query" : "National Public Radio",
                    "operator" : "and"
                  }
                }
              }
            }
        )

布尔查询"无线电或电视"

res = es_conn.search(index = config.INDEX_NAME,
        body={
              "_source": ["filename"],
              "query": {
                "match" : {
                  "text" : {
                    "query" : "Radio TV",
                  }
                }
              }
            }
        )

但是如何将这两者结合起来,我没有任何线索,任何人都可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

您可以使用以下查询来检查查询文本是否与国家公共电视台或国家公共广播电台相匹配。它使用should运算符和最小数字应匹配等于1确保文本应该匹配这两个中的一个。

{
  "query": {
     "bool": {
        "should": [
           {

                 "match": {
                    "text": {
                       "query": "National Public Radio"
                    }

              }
           },
           {

                 "match": {
                    "text": {
                       "query": "National Public TV"
                    }
                 }

           }
        ],
        "minimum_should_match" : "1"
     }
  }
}