我有这样的数据和要求
"birth": "2003-02-01T15:00:00.000Z",
"aggs": {
"aaa": {
"terms": {
"field": "birth",
"format": "yyyy",
"size": 100
}
}
}
}
我想要以年份列表的形式获取结果,并且每年的当前结果的文档数如下所示:
{
"key": 988556400000,
"key_as_string": "2001",
"doc_count": 2295
},
{
"key": 1375369200000,
"key_as_string": "2013",
"doc_count": 2284
},
{
"key": 1054479600000,
"key_as_string": "2003",
"doc_count": 2281
},
{
"key": 1183215600000,
"key_as_string": "2007",
"doc_count": 2276
},
{
"key": 1009810800000,
"key_as_string": "2001",
"doc_count": 2231
},
{
"key": 1170255600000,
"key_as_string": "2007",
"doc_count": 1695
},
如果key_as_string是实际年份,那么我希望它应该仅包含一个值。
最佳答案
条款汇总将为每个唯一的“出生”日期创建存储桶,格式字段将仅从中输出年份。
因此,由于基础日期不同,因此您将获得年份的重复值。
您需要改为使用date_histogram。它将根据间隔存储文件
查询:
{
"size": 0,
"aggs": {
"NAME": {
"date_histogram": {
"field": "birth",
"interval": "year"
}
}
}
}
结果:
"aggregations" : {
"NAME" : {
"buckets" : [
{
"key_as_string" : "2003-01-01T00:00:00.000Z",
"key" : 1041379200000,
"doc_count" : 1
},
{
"key_as_string" : "2004-01-01T00:00:00.000Z", --> 2 docs under year 2004
"key" : 1072915200000,
"doc_count" : 2
}
]
}
}
如果只想查看年份,则可以指定“格式”:“yyyy”
查询:
{
"size": 0,
"aggs": {
"NAME": {
"date_histogram": {
"field": "birth",
"interval": "year",
"format": "yyyy" --> note
}
}
}
}
关于elasticsearch - Elasticsearch从日期和文档计数中获得明显的年份,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61815797/