0

我在弹性搜索索引中有大约 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 秒,并且该字段标签中的值数量越高,执行时间的数量就越高。

我知道脚本查询很昂贵,那么有什么方法可以显着减少执行时间?

4

0 回答 0