我正在将 Tomcat 访问日志数据索引到 Elasticsearch (1.7.3) 中。我处理的文档有持续时间的概念,表示为结束时间和以毫秒为单位的持续时间(可以计算开始时间,但我也可以存储它,如果它有助于解决我的问题)。例如:
{
ztime: "10-17-2015T04:05:00.000+02:00",
duration: 4500,
thred: "http-nio-8080-exec-14"
},
{
ztime: "10-17-2015T04:07:42.227+02:00",
duration: 3100,
thred: "http-nio-8080-exec-25"
}
我的目标是生成一个直方图,在其中显示每秒存在多少线程。
我想过使用 date_histogram 将我的文档聚合到 1 秒的存储桶中。
GET /mindex/mtype/_search?search_type=count
{
"aggs": {
"threads_per_hr": {
"date_histogram": {
"field": "ztime",
"interval": "1s",
"min_doc_count": 1
},
"aggs": {
"per_hr_threads": {
"cardinality": {
"field": "thread"
}
}
}
}
}
}
但是,因此每个线程只会被分桶一次。
我需要将每个文档分成几个桶。例如,我需要将第一个文档分桶到 04:05:00.000、04:05:01.000、04:05:02.000、04:05:03.000 桶中。
什么样的查询(Java API 和/或 REST API)可以帮助我实现这个目标?