首页/数据/NoSQL 速查/runtime fields 运行时字段
Elasticsearch89 条

runtime fields 运行时字段

runtime 字段在查询时计算、不占索引空间,可在查询请求里临时定义,也可写进索引映射长期生效;适合对已有数据做探索性统计而不重建索引。

NoSQL 速查数据更新于 2026-10-12
定义位置查询请求的 runtime_mappings,或映射里的 runtime 段
常用场景从复合字段拆值、按时间派生星期/时段、给旧索引补字段
代价每次查询按需计算,命中量大时比索引字段慢

示例

示例
GET /logs/_search
{
  "size": 0,
  "runtime_mappings": {
    "day_of_week": {
      "type": "keyword",
      "script": {
        "source": "emit(doc["@timestamp"].value.dayOfWeekEnum.getDisplayName(TextStyle.FULL, Locale.ROOT))"
      }
    }
  },
  "aggs": { "by_day": { "terms": { "field": "day_of_week" } } }
}
runtime 字段可以被搜索、聚合、排序,行为与索引字段一致;确认口径稳定后再固化进映射或物化为真实字段。

易错点

  • runtime 脚本里类型与 emit 不匹配会静默丢值,聚合前先用简单查询验证字段有输出
  • 把 runtime 字段当常用过滤条件会持续承担计算成本,高频字段应常规索引

数据来源与参考

  • Elasticsearch Guide: Runtime fields
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌