我是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,这只是一个数字。我需要看到实际的"小组成员。"提前致谢。
答案 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
}
}
}
}
}
}'