gpt4 book ai didi

java - elasticsearch Java API 上的多 DateHistogram 聚合

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:45:46 25 4
gpt4 key购买 nike

我将 dateHistogram 聚合与 ElasticSearch Java API 一起使用,它非常适用于简单的聚合,例如每小时/天/月/年的点击次数(想象一系列文档,其中日期直方图聚合是在“indexed_date”字段上制作)。

但是,我可以通过一个查询,进行与另一个字段相关的多字段日期聚合吗?类似于 Kibana 为图表所做的事情。

我想实现的一个例子:

我有一系列文档,其中每个文档都是一个“事件”,它有自己的时间戳。这些文档有一系列字段,如“状态”、“版本”等。

我可以根据日期直方图、时间戳字段和另一个字段的所有值获得聚合吗?

以一小时为间隔的聚合结果示例:

高:12地位 - { 活跃:34 暂停:12

高度:13地位 - { 活跃:10

编辑:

一些示例数据:

"doc1" - { timestamp: "2014-12-23 12:01", status: "ACTIVE", version: 1 }
"doc2" - { timestamp: "2014-12-23 12.15", status: "PAUSED", version: 1 }
"doc3" - { timestamp: "2014-12-23 13.55", status: "ACTIVE", version: 2 }
(and so on..)

最佳答案

我会做 term aggregation在日期直方图中。

在下面的示例中,您可以看到针对每种不同状态类型返回的文档计数:

curl -XGET 'http://localhost:9200/myindex/mydata/_search?search_type=count&pretty' -d '
> {
> "query" : {
> "match_all" : { }
> },
> "aggs" : {
> "date_hist_agg" : {
> "date_histogram" : {"field" : "timestamp", "interval" : "hour"},
> "aggs" : {
> "status_agg" : {
> "terms" : { "field" : "status" }
> }
> }
> }
> }
> }'
{
"took" : 213,
"timed_out" : false,
"_shards" : {
"total" : 5,
"successful" : 5,
"failed" : 0
},
"hits" : {
"total" : 3,
"max_score" : 0.0,
"hits" : [ ]
},
"aggregations" : {
"date_hist_agg" : {
"buckets" : [ {
"key_as_string" : "2014-12-23T17:00:00.000Z",
"key" : 1419354000000,
"doc_count" : 2,
"status_agg" : {
"doc_count_error_upper_bound" : 0,
"sum_other_doc_count" : 0,
"buckets" : [ {
"key" : "active",
"doc_count" : 1
}, {
"key" : "paused",
"doc_count" : 1
} ]
}
}, {
"key_as_string" : "2014-12-23T18:00:00.000Z",
"key" : 1419357600000,
"doc_count" : 1,
"status_agg" : {
"doc_count_error_upper_bound" : 0,
"sum_other_doc_count" : 0,
"buckets" : [ {
"key" : "active",
"doc_count" : 1
} ]
}
} ]
}
}
}

关于java - elasticsearch Java API 上的多 DateHistogram 聚合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27623665/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com