我在弹性搜索索引中有大约 1700 万个文档(它逐渐增加),用于聚合的属性标签之一的映射是
{
"mappings":{
"labels":{
"properties":{
"label":{
"type":"text",
"fields":{
"raw":{
"type":"keyword"
}
}
},
"count":{
"type":"float"
}
}
}
}
}
每个文档在该标签属性中有超过 500 个项目
现在在使用查询聚合文档时
{
"query": {
"bool": {
"must": [
{
"match_phrase": {
"type": "XYZ"
}
}
]
}
},
"aggs": {
"date": {
"range": {
"field": "date",
"ranges": [
{
"from": 1577816100000,
"to": 1609438500000
},
{
"from": 1546280100000,
"to": 1577816100000
}
]
},
"aggs": {
"field1": {
"terms": {
"field": "field1",
"size": 100
},
"aggs": {
"agg_label": {
"terms": {
"field": "labels.label.raw",
"size": 250,
"min_doc_count": 5
},
"aggs": {
"sum1": {
"sum": {
"script": "_score"
}
},
"sum2": {
"sum": {
"field": "labels.count"
}
}
}
}
}
}
}
}
}
}
它大约需要 20 秒,并且该字段标签中的值数量越高,执行时间的数量就越高。
我知道脚本查询很昂贵,那么有什么方法可以显着减少执行时间?