elasticsearch查询使用curl获取特定日期之间的记录

时间:2017-05-24 10:23:00

标签: elasticsearch

curl -X GET 'http://xxx.xxx.x.xx:9200/upslinklog/upslinklog/_search?pretty' -d '{
    "query": {
        "filtered": {
            "query": {
                "match_all": {}
            },
            "filter": {
                "range": {
                    "logTimestamp": {
                        "gte": "2017/05/17", 
            "lte":"2017/05/18"
                "format": "yyyy/mm/dd"
                    }
                }
            }

    }
}
'

我想在2017年5月17日之后进行记录。以上查询代码给出了所有记录而不是一些记录。如何对过滤数据进行范围查询

1 个答案:

答案 0 :(得分:1)

首先,您必须在索引配置中指定logTimestamp作为日期。

来自 Elasticsearch documentation "Date datatype"

索引配置示例:

PUT my_index
{
  "mappings": {
    "my_type": {
      "properties": {
        "date": {
          "type": "date" 
        }
      }
    }
  }
}

然后您可以使用简单的 Range Query

GET _search
{
    "query": {
        "range" : {
            "born" : {
                "gte": "01/01/2012",
                "lte": "01/01/2013",
                "format": "dd/MM/yyyy"
            }
        }
    }
}