弹性搜索中的术语和间隔聚合
Aggregation on terms and intervals in elasticsearch
我的文档如下:
{
"uri" : "post:1130a8ef197882bc3ebd",
"topic_list" : [
"bye",
"hello"
],
"datetime" : "2010-06-06T22:08:49"
}
我想在 datetime
和 topic_list
上进行聚合查询。我想要的输出是告诉我在每个时间间隔内,有多少文档在 topic_list
.
中有 hello
主题
我试过的是:
{
"size": 0,
"aggs": {
"test": {
"terms": {
"field": "topic_list"
}
}
}
}
但输出只是告诉我有多少文档始终包含每个主题,而不是在时间间隔内。
我怎样才能创建这样的聚合?
您还需要补充两件事:
- 一个查询,将结果限制为包含主题“hello”的文档。如果您只对每个时间间隔的文档计数感兴趣,则不需要
topic_list
字段上的 terms
聚合
- a
date_histogram
aggregation 创建时间间隔
这里是查询:
{
"size": 0,
"query": {
"term": {
"topic_list": "hello"
}
},
"aggs": {
"intervals": {
"date_histogram": {
"field": "date",
"calendar_interval": "1d"
}
}
}
}
我的文档如下:
{
"uri" : "post:1130a8ef197882bc3ebd",
"topic_list" : [
"bye",
"hello"
],
"datetime" : "2010-06-06T22:08:49"
}
我想在 datetime
和 topic_list
上进行聚合查询。我想要的输出是告诉我在每个时间间隔内,有多少文档在 topic_list
.
hello
主题
我试过的是:
{
"size": 0,
"aggs": {
"test": {
"terms": {
"field": "topic_list"
}
}
}
}
但输出只是告诉我有多少文档始终包含每个主题,而不是在时间间隔内。 我怎样才能创建这样的聚合?
您还需要补充两件事:
- 一个查询,将结果限制为包含主题“hello”的文档。如果您只对每个时间间隔的文档计数感兴趣,则不需要
topic_list
字段上的terms
聚合 - a
date_histogram
aggregation 创建时间间隔
这里是查询:
{
"size": 0,
"query": {
"term": {
"topic_list": "hello"
}
},
"aggs": {
"intervals": {
"date_histogram": {
"field": "date",
"calendar_interval": "1d"
}
}
}
}