Link Search Menu Expand Document Documentation Menu

急切全局序号

eager_global_ordinals 映射参数控制字段的全局序号何时构建。启用后,全局序号在索引刷新期间计算,而不是在查询执行期间“惰性”计算。这可以提高依赖全局序号的操作的性能,例如,对 keyword 字段进行排序和聚合。但是,它也可能增加索引刷新时间和内存使用。

全局序号表示从术语值到整数标识符的映射,并在内部用于快速执行聚合和排序操作。通过“急切”加载它们,系统以索引期间额外的预处理为代价,减少了查询延迟。

默认情况下,eager_global_ordinals 是禁用的,以确保集群针对索引速度进行了优化。

全局序号存储在字段数据缓存中并占用堆内存。高基数字段会消耗大量堆内存。为防止内存相关问题,仔细配置字段数据断路器设置至关重要。

何时使用全局序号

如果搜索包含以下任何内容,则使用全局序号

  • keywordipflattened 字段进行桶聚合。这包括 termscompositediversified_samplersignificant_terms 聚合。
  • 对需要启用 fielddatatext 字段进行聚合。
  • 使用 join 字段的父/子查询,例如 has_child 查询或 parent 聚合。

在字段上启用急切全局序号

以下请求创建一个名为 products 的索引,并启用 eager_global_ordinals

PUT /products
{
  "mappings": {
    "properties": {
      "size": {
        "type": "keyword",
        "eager_global_ordinals": true
      }
    }
  }
}

以下请求索引一个文档

PUT /products/_doc/1
{
  "size": "ABC123"
}

以下请求运行一个 terms 聚合

POST /products/_search
{
  "size": 0,
  "aggs": {
    "size_agg": {
      "terms": {
        "field": "size"
      }
    }
  }
}

剩余 350 字符

有问题?

想要贡献?