需要帮助将ElasticSearch过滤器布尔查询从1.7转换为6.7

时间:2019-09-05 04:26:30

标签: elasticsearch

我正在从Elasticsearch 1.7升级到6.7。更改之一是删除过滤查询,转而使用布尔查询。

我正在寻找转换以下查询的帮助。

我尝试将“和”更改为“必须”,将“过滤”更改为“布尔”

代码如下:


{
    "size": 0,
    "_source": false,
    "query": {
        "filtered": {
            "filter": {
                "and": [{
                    "geo_distance": {
                        "distance": "50mi"
                        "location": "35.323312, -23.14848"
                    }
                },
                {
                    "bool": {
                        "must": {
                            "term": {
                                "id_from_store": 99
                            }
                        }
                    }
                },
                {
                    "bool": {
                        "must": {
                            "term": {
                                "is_new": 1
                            }
                        }
                    }
                },
                {
                    "bool": {
                        "must": {
                            "range": {
                                "datetime_shelf": {
                                    "gte": "2018-02-01"
                                }
                            }
                        }
                    }
                }]
            }
        }
    },
    "aggs": {
        "group_by_listing": {
            "terms": {
                "field": "p_id",
                "size": 200 
            }
        }
    }
}

我该如何正确构造它?

2 个答案:

答案 0 :(得分:2)

就像这样:

{
  "size": 0,
  "_source": false,
  "query": {
    "bool": {
      "filter": [
        {
          "geo_distance": {
            "distance": "50mi",
            "location": "35.323312, -23.14848"
          }
        },
        {
          "term": {
            "id_from_store": 99
          }
        },
        {
          "term": {
            "is_new": false
          }
        },
        {
          "range": {
            "datetime_shelf": {
              "gte": "2018-02-01"
            }
          }
        }
      ]
    }
  },
  "aggs": {
    "group_by_listing": {
      "terms": {
        "field": "p_id",
        "size": 200
      }
    }
  }
}

答案 1 :(得分:0)

查询的结构应如下所示。无需添加布尔值,并且必须针对每个查询

query" : {
    "bool" : {
      "must": [
                 {"geo_distance":<your_query>},
                 {"term":<your_query>},
                 {"term":<your_query>},
                 {"range":<your_query>}
              ]
             }
         }