如何在弹性搜索python中结合这两个查询?

时间:2019-05-03 03:20:51

标签: python elasticsearch

我想结合两个查询

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

{
   "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之前

1 个答案:

答案 0 :(得分:2)

您可以这样做:

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