是否可以根据一个月的日期时间查询elasticsearch以将条目在给定状态中的分钟数相加?
例如,条目的格式为:
Datetime Cluster Hosts_on Hosts_off Hosts_on_percentage
Oct 10 12:01 c101 10 2 .8333
Oct 10 12:02 c101 10 2 .8333
Oct 10 12:03 c101 10 2 .8333
是否可以根据日期时间总计c101拥有超过60%主机的分钟数?
答案 0 :(得分:1)
不完全是这样,但是你可以用这样的东西非常接近:
POST /test_index/_search?search_type=count
{
"query": {
"filtered": {
"filter": {
"bool": {
"must": [
{
"term": {
"Cluster": "c101"
}
},
{
"range": {
"Hosts_on_percentage": {
"gt": 0.6
}
}
}
]
}
}
}
},
"aggs": {
"min_datetime": {
"min": {
"field": "Datetime"
}
},
"max_datetime": {
"max": {
"field": "Datetime"
}
}
}
}
根据您发布的数据,此查询返回:
{
"took": 4,
"timed_out": false,
"_shards": {
"total": 1,
"successful": 1,
"failed": 0
},
"hits": {
"total": 3,
"max_score": 0,
"hits": []
},
"aggregations": {
"max_datetime": {
"value": 820980000,
"value_as_string": "Jan 10 12:03"
},
"min_datetime": {
"value": 820860000,
"value_as_string": "Jan 10 12:01"
}
}
}
那么你可以计算客户端最小和最大时间的差异。
或者,如果您只想要返回的文件数,可以从以下网址获取:
"hits": {
"total": 3,
"max_score": 0,
"hits": []
},
以下是我用来测试它的一些代码(在这里获取正确的日期映射):
http://sense.qbox.io/gist/c62289926a18e34b1b1b31e3643f36cbe5a7b4cf
答案 1 :(得分:0)
如果它们位于每个群集和日期时间的字段中,则可以确定总计分钟数。您必须使用存储桶和指标聚合。条件可以通过范围聚合来实现。
我在下面推荐的链接;我希望我能给你一个如何解决这个任务的想法: - )
https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations.html
https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-metrics.html
https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket.html