elasticsearch聚合(sql group by)
作者:会飞的
elasticsearch聚合(sql group by)
“elasticsearch 里面桶的叫法和 SQL 里面分组的概念是类似的,一个桶就类似 SQL 里面的一个 group,多级嵌套的 aggregation, 类似 SQL 里面的多字段分组(group by field1,field2, …..),注意这里仅仅是概念类似,底层的实现原理是不一样的。
terms 桶基于我们的数据动态构建桶;它并不知道到底生成了多少桶。 大多数时候对单个字段的聚合查询还是非常快的, 但是当需要同时聚合多个字段时,就可能会产生大量的分组,最终结果就是占用 es 大量内存,从而导致 OOM 的情况发生。
GET /test/type/_search
{
"query": {
"constant_score": {
"filter": {
"bool": {
"must": [
{
"term": {
"state": 1
}
}
]
}
}
}
},
"size": 0,
"aggs" : {
"group_by_tags" : {
"terms" : { "field" : "source" }
}
}
}
结果:
{
"took" : 1432,
"timed_out" : false,
"_shards" : {
"total" : 35,
"successful" : 35,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : 16,
"max_score" : 0.0,
"hits" : [ ]
},
"aggregations" : {
"group_by_tags" : {
"doc_count_error_upper_bound" : 0,
"sum_other_doc_count" : 0,
"buckets" : [
{
"key" : 2,
"doc_count" : 11
},
{
"key" : 5,
"doc_count" : 5
}
]
}
}
}
猜你喜欢
您可能感兴趣的文章:
- SQL DELETE 语句
- SQL TOP 子句
- SQL LIKE 操作符
- SQL 通配符
- SQL IN 操作符
- SQL BETWEEN 操作符
- SQL Alias(别名)
- mysql查询语句 和 多表关联查询 以及 子查询
- thinkphp array_shift() expects parameter 1 to be array, string given
- 一般在调用外部服务请求时候,有时由于配置问题无法访问,phph会报一个php_network_getaddresses: getaddrinfo failed: Name or servicenot known的错误
- python读文件指定行的数据
- SQL HAVING 子句
- Python操作MongoDB
- mysql group by count
- MySQL高性能优化规范、SQL处理、分区表、主主/从复制架构
- python 字符串中只取数字
- phpstorm撤销反撤销
- 如何保证缓存与数据库的双写一致性?
- php json_encode后插入mysql后成乱码