ElasticSearch:必须+存在查询

hkmswyz6  于 2023-04-05  发布在  ElasticSearch
关注(0)|答案(2)|浏览(174)
query = {
   "query":{
      "bool":{
         "must":[{
               "term": {
                  "company_id":"company_id_1234"
               },
               "exists": {
                  "field": "location_id"
               }
         }],
      }
   }
}

server.count(
    body=query,
    index="index_v1.2.0"
)

如果我使用elasticsearch python客户端运行上面的代码,我得到RequestError: RequestError(400, 'parsing_exception', 'Failed to parse')。但是,如果我注解掉exists子句的部分,查询运行没有任何麻烦...我应该如何解决这个问题,以便我得到文档的数量,使得company id = company_id_1234和具有location_id字段?(编辑)

lnlaulya

lnlaulya1#

你的查询需要这样写,你只是缺少了一些花括号:

query = {
   "query":{
      "bool":{
         "must":[
           {
               "term": {
                  "company_id":"company_id_1234"
               }
           },
           {
               "exists": {
                  "field": "location_id"
               }
           }
         ]
      }
   }
}
pdtvr36n

pdtvr36n2#

看起来为了得到一些匹配,我不得不使用过滤查询。

query = {
   "query":{
      "bool":{
         "must":[{
               "term": {
                  "company_id":"company_id_1234"
               }
         }],
         "filter":{
            "exists": {
               "field": "location_id"
            }
         }
      }
   }
}

相关问题