我正在使用elasticsearch
db来存储基准数据。
我需要计算并检索一组值的平均值,最大值,最小值等。
我有类似的东西:
Index = "myindex"
Type = "mytype"
每个对象有3个字段:
"load_time", "execution_time", "log_time".
然后我运行基准测试,db填充了数百条记录。现在,我将检索每个字段的平均值,最大值和最小值。
我应该运行什么查询? 我尝试了统计方面,但我总是得到一个“无法识别的令牌例外”......
答案 0 :(得分:3)
您应该使用统计方面(doc)
查询应该是:
{
"query" : {
"match_all" : {}
},
"facets" : {
"statload_time" : {
"statistical" : {
"field" : "load_time"
}
},
"statexec_time" : {
"statistical" : {
"field" : "execution_time"
}
},
"statlog_time" : {
"statistical" : {
"field" : "log_time"
}
}
}
}
正如文件所说:
统计数据包括计数,总数,平方和,平均值 (平均值),最小值,最大值,方差和标准差
在索引几个文档之后,查询的响应是:
{
"took" : 2,
"timed_out" : false,
"_shards" : {
"total" : 5,
"successful" : 5,
"failed" : 0
},
"hits" : {
"total" : 2,
"max_score" : 1.0,
"hits" : [ ]
},
"facets" : {
"statload_time" : {
"_type" : "statistical",
"count" : 2,
"total" : 7.0,
"min" : 2.0,
"max" : 5.0,
"mean" : 3.5,
"sum_of_squares" : 29.0,
"variance" : 2.25,
"std_deviation" : 1.5
},
"statexec_time" : {
"_type" : "statistical",
"count" : 2,
"total" : 12.0,
"min" : 5.0,
"max" : 7.0,
"mean" : 6.0,
"sum_of_squares" : 74.0,
"variance" : 1.0,
"std_deviation" : 1.0
},
"statlog_time" : {
"_type" : "statistical",
"count" : 2,
"total" : 16.0,
"min" : 7.0,
"max" : 9.0,
"mean" : 8.0,
"sum_of_squares" : 130.0,
"variance" : 1.0,
"std_deviation" : 1.0
}
}
}