用agg接口开发一个percentile panel
# curl -XPOST http://127.0.0.1:9200/logstash-2014.07.11/_search -d '{
"aggs" : {
"request_time_percentiles" : {
"percentiles" : {
"field" : "request_time",
"percents" : [50,75,90,99]
}
}
}
}' request = {
'stats': {
'filter': JSON.parse($scope.ejs.QueryFilter(
$scope.ejs.FilteredQuery(
boolQuery,
filterSrv.getBoolFilter(filterSrv.ids())
)
).toString(), true),
'aggs': {
'stats': {
'percentiles': {
'field': $scope.panel.field,
'percents': $scope.modes
}
}
}
}
};
$.each(queries, function (i, q) {
var query = $scope.ejs.BoolQuery();
query.should(querySrv.toEjsObj(q));
var qname = 'stats_'+i;
var aggsquery = {};
aggsquery[qname] = {
'percentiles': {
'field': $scope.panel.field,
'percents': $scope.modes
}
};
request[qname] = {
'filter': JSON.parse($scope.ejs.QueryFilter(
$scope.ejs.FilteredQuery(
query,
filterSrv.getBoolFilter(filterSrv.ids())
)
).toString(), true),
'aggs': aggsquery
};
});
$scope.inspector = angular.toJson({aggs:request},true);
results = $http({
url: config.elasticsearch + '/' + dashboard.indices + '/_search?size=0',
method: "POST",
data: { aggs: request }
});代码实现要点
1.1 和 1.3 版本的返回结果集层次变动
浮点数排序
query alias 的中文支持
面板效果

Last updated