无法使Elasticsearch范围查询正常工作

时间:2019-12-23 14:12:44

标签: elasticsearch

我有如下映射的元素

"metadata": {
                    "type": "nested",
                    "properties": {
                        "PublicationDate": {
                            "type": "date",
                            "format": "yyyy-M-d" 
                        },

似乎没有什么问题,这些元素中的内容如下所示:

"metadata":{"PublicationDate":"2019-7-1"}}

所以我希望当我进行如下范围查询时

must": {
     "range" : {
         "metadata.PublicationDate" : {
            "gte": "2011-07-01",
            "lte": "2020-07-01"
          }
      }

}

它将起作用,因为我的所有文档都在这两个范围之间,但不起作用。我需要显示更多查询还是在这里做错了什么?

1 个答案:

答案 0 :(得分:1)

您的metadata字段为nested,因此您必须使用nested查询(https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-nested-query.html)来查询它

因此,您的查询必须是

{
    "query": {
        "nested": {
            "path": "metadata",
            "query": {
                "range": {
                    "metadata.PublicationDate": {
                        "gte": "2011-07-01",
                        "lte": "2020-07-01"
                    }
                }
            }
        }
    }
}