这是我参与2022首次更文挑战的第12天,活动详情查看:2022首次更文挑战
这次主要记录一下elasticsearch精准查询中的聚合查询
aggregation
主要参数包括:
- query:表示查询范围。包含的内容在这里
- size: 返回文档的数量。0表示:不返回文档
- aggs: 聚合查询的主要设置条件 主要记录一下aggs参数
aggs
metric聚合:包含参数count max min avg sum, cardinality(distinct) stats(统计) percentile tophits
举个例子:
{
// 不返回文档 加快检索速度
"size": 0,
// 用关键字aggs
"aggs": {
"最大请求时间": {
"max": { "field": "字段名" }
},
"平均请求时间": {
"avg": { "field": "字段名" }
},
"统计": {
"stats": { "field": "字段名" }
}
},
// 查询范围
"query": {
}
}
bucket分组:分组设置
举个例子:
{
"size": 0,
"aggs": {
"环境种类": {
"terms": {
"field": "字段名",
"size": 2
}
},
"环境个数": {
"cardinality": {
"field": "字段名"
}
}
}
}
range: 范围聚合查询 举个例子
{
"size": 0,
"aggs": {
"请求时长": {
"range": {
"field": "字段名",
"ranges": [
{ "to": 300 },
{ "from": 300, "to": 1000 },
{ "from": 1000, "to": 10000, "key": "1K-1W" },
{ "from": 10000, "key": ">1W" }
]
}
}
}
}
}
histogram :直方图聚合 举个例子
{
"size": 0,
"aggs": {
"请求时长": {
"histogram": {
"field": "字段名",
"interval": 3000,
"extended_bounds": {
"min": 0,
"max": 10000
}
}
}
}
}
关于聚合方法的一些精准查询
聚合排序:
{
"size": 0,
"aggs": {
"环境": {
"terms": {
"field": "字段名",
// 对聚合结果进行排序 默认是doc_count降序,也可以对聚合项目排序
"order": [
{ "_count": "asc" },
{ "_key": "desc" }
]
}
}
},
"query": {
"range": {
"字段名": {
"gt": "1000"
}
}
}
}
条件范围:举个例子 具体含义是所有参数一起使用
{
"size": 0,
"aggs": {
"最大请求时间": {
"max": { "field": "字段名" }
},
// filter的作用范围 - 在具体的aggs中做范围限定
"大于1K的统计": {
"filter": {
"range": {
"字段名": { "gt": "1000" }
}
},
"aggs": {
"统计": {
"stats": { "field": "querytime" }
}
}
},
"所有环境": {
"terms": {
"field": "字段名"
}
}
},
// query的作用范围
"query": {
"range": {
"字段名": {
"gt": "100"
}
}
}
}
会不定时补充文档。 持续更新中~~~~