Elastic Search / Elasica php - 或查询包含 NULL 的字段不起作用

如何仅查询 location_idnull 或locations.country_id 在一组给定 ID 中的文档?这是当前查询,但它根本不返回任何内容...如果我从查询中删除 location_id,它会起作用并至少返回与国家/地区 ID 匹配的文档。


{

   "bool":{

      "must":[

         {

            "bool":{

               "must_not":[

                  {

                     "exists":{

                        "field":"location_id"

                     }

                  }

               ],

               "must":[

                  {

                     "terms":{

                        "locations.country_id":[

                           18

                        ]

                     }

                  }

               ]

            }

         }

      ]

   }

}


犯罪嫌疑人X
浏览 121回答 1
1回答

qq_遁去的一_1

在 elasticsearch 中,必须是 AND 并且应该表现得像 OR 您的查询转换为 locationId is null AND locations.country_id In [set of ids]。must需要换成should。询问:{  "query": {    "bool": {      "should": [        {          "bool": {            "must_not": [              {                "exists": {                  "field": "location_id"                }              }            ]          }        },        {          "terms": {            "locations.country_id": [              18            ]          }        }      ],      "minimum_should_match": 1    }  }}
打开App,查看更多内容
随时随地看视频慕课网APP