Elasticsearch日期直方图查询

时间:2015-08-07 06:57:26

标签: elasticsearch

我是Elasticsearch的新手,我正在根据他们的日期聚类照片索引。特别是,我想分组在1.5小时内拍摄的照片。

我知道Elasticsearch具有Date Histogram Aggregation属性,但它只返回" doc_count"。我需要查看索引上的项目,而不仅仅是数字。

什么样的查询可以帮助满足这种需求?

供您参考,以下查询:

GET /account_index/_search?


"aggs":{ 
    "zamanlar":{
        "date_histogram" : {
            "field" : "EXIF DateTimeOriginal",
            "interval" : "1.5h"
        }
    }
}

返回:

{
"took": 6,
"timed_out": false,
"_shards": {
  "total": 5,
  "successful": 5,
  "failed": 0
},
 "hits": {
   "total": 1688,
   "max_score": 0,
   "hits": []
},
 "aggregations": {
  "zamanlar": {
     "buckets": [
        {
           "key_as_string": "2007:08:11 15:00:00",
           "key": 1186844400000,
           "doc_count": 7
        },
        {
           "key_as_string": "2007:08:11 18:00:00",
           "key": 1186855200000,
           "doc_count": 1
        },
        {
           "key_as_string": "2007:08:12 00:00:00",
           "key": 1186876800000,
           "doc_count": 7
        }]}}}

我不想要doc_count,这只是一个数字。我需要看到实际的"小组成员。"提前致谢。

1 个答案:

答案 0 :(得分:1)

您可以为每个存储桶使用top_hits子聚合。这样,您就可以获得每个日期间隔的点击次数。

curl -XGET localhost:9200/account_index/_search -d '{
  "aggs":{ 
    "zamanlar":{
        "date_histogram" : {
            "field" : "EXIF DateTimeOriginal",
            "interval" : "1.5h"
        },
        "aggs": {
            "hits": {
                "top_hits": {
                    "size": 10,              <--- you can change the size
                    "sort": {"size":"desc"}  <--- and the sorting, too
                }
            }
        }
    }
  }
}'