首页 > 解决方案 > 如何在弹性搜索 python 中组合这两个查询?

问题描述

我有两个要合并的查询

第一个返回“analysis.data_counts”值大于 0 的结果。

{
   "query": {
       "range" : {
           "analysis.data_counts" : {
               "gte" : 1,
           }
       }
   }
}

第二个查看它是否具有某个字段,并检查另一个字段 bool 值,如果它具有该值,则在查询中将其提升得更高,因此它们首先出现

  "query": {
    "bool": {
      "must": {
        "exists": {
          "field": "data_types"
        }
      },
      "should": {
        "term": {
          "reviewed": False
        },

      }
    }
  }
})

所以我需要将它们联系在一起,这样我才能得到“analysis.data_counts”> = 1的结果,字段类型为“data_types”并使“reviewed”== False出现在True之前

标签: pythonelasticsearch

解决方案


你可以这样做:

{
  "query": {
    "bool": {
      "must": [
        {
          "exists": {
            "field": "data_types"
          }
        },
        {
          "range" : {
            "analysis.data_counts" : {
               "gte" : 1,
            }
          }
        }
      ],
      "should": {
        "term": {
          "reviewed": False
        }
      }
    }
  }
}

推荐阅读