Document count: 4 Billion
disc size : 2 TB
Primary: 5
replica: 2
master node : 3
data node: 4 * [16cpu and 64GB ram]
heap size: 30GB
mlock enable : true
最多需要3分钟才能回复聚合查询。根据后续请求,它可以缓存并加快处理速度。有没有一种方法可以加快第一个查询的聚合速度?
示例汇总查询:
{
"query": {
"bool": {
"must": [],
"must_not": [],
"should": []
}
},
"size": 0,
"aggs": {
"agg_;COUNT_ROWS;5d8b0621690e727ff775d4ed": {
"terms": {
"field": "feild1.keyword",
"size": 10000,
"shard_size": 100,
"order": {
"_term": "asc"
}
},
"aggs": {
"agg_;COUNT_ROWS;5d8b0621690e727ff775d4ec": {
"terms": {
"field": "feild2.keyword",
"size": 30,
"shard_size": 100,
"order": {
"_term": "asc"
}
},
"aggs": {
"agg_HouseHold;COUNT_DISTINCT": {
"cardinality": {
"field": "feild3.keyword",
"precision_threshold": 40000
}
}
}
}
}
}
}
}
答案 0 :(得分:1)
如果我理解正确,您正在单个实例上运行查询,共有15个分片,其中5个是主数据库。第一个terms
聚合的大小为10,000。这个数字会影响性能。请考虑移至composite-aggregation以便使用分页而不是试图将其挤压到一个巨大的响应。
另外,shard_size
对我来说意义不大,因为您仅查询5个分片,并要求10,000个结果-从5个分片中获得100个结果将产生500个结果,这还不够。我将放弃此shard_size
参数,或设置较高的值以使其有意义。