上节课时中介绍了对于 query 查询可以使用 Scroll 来进行优化,聚合数据有时候也会产生大量的数据,本课时将会介绍一下如何优化对聚合数据的查询。
给定需求:
同一个人在不同城市消费的均值。
对于这个需求要弄明白,保证同一个人就是对这个人进行一次聚合,然后再根据不同城市进行聚合,这种需求就会产生大量的聚合数据,因为人比较多。
下面的语句就是先用 customer_id 作为聚合 key,然后用 geoip.city_name 作为第二次聚合 key。再对 taxless_total_price 取均值。
GET /kibana_sample_data_ecommerce/_search
{
"size": 0,
"aggs": {
"users": {
"terms": {
"field": "customer_id",
"size": 10
},"aggs": {
"city": {
"terms": {
"field": "geoip.city_name",
"size": 10
},"aggs": {
"avg": {
"avg": {
"field": "taxless_total_price"
}
}
}
}
}
}
}
}
本文探讨了如何优化Elasticsearch中的聚合数据查询,重点介绍了Partition查询和Composite查询。Partition查询适用于预估数据量,通过多线程分批获取数据,但可能不精确。Composite查询则允许按需翻页,无需预先知道数据总量,但不适合多线程并行处理。
订阅专栏 解锁全文
979

被折叠的 条评论
为什么被折叠?



