java - elasticsearch Java API 上的多 DateHistogram 聚合

标签 java elasticsearch

我将 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/

相关文章:

elasticsearch - django haystack 中的 EdgeNgramField 最小和最大字母

java - 在 for 循环 JAVA 中定义方法

java - 其他人是否可以在 src 中实现 `fake` Java 对象?

c# - 使用 LDAP 从 Active Directory 检索用户属性 - JAVA

Android Studio 中的 java.lang.illegalArgumentException

java - Spring Boot 的 Elasticsearch Searchguard 配置

java - 为什么 NetBeans 总是要在我的 Maven 项目上运行 "priming build"?

arrays - elasticsearch将数据转换为数组

elasticsearch - Kibana条形图平均按字段汇总

elasticsearch - 在RapidMiner中使用 Elasticsearch