You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Elasticsearch script_fields中如何访问_routing、_parent等元字段?

嘿,我知道你为啥碰壁了——你用params对象访问元字段的思路不对,params是用来传递自定义脚本参数的,可不是获取文档元数据的正确途径!

正确访问_routing、_parent等元字段的方法

要在script_fields里拿到_routing、_parent这类元字段,得用doc对象来访问,它是Painless脚本里专门用来获取当前文档索引字段(包括元字段)的入口。

示例:获取_routing字段

直接通过doc['_routing'].value就能拿到路由值:

{
  "query": { "match_all": {} },
  "script_fields": {
    "custom_routing": {
      "script": {
        "lang": "painless",
        "source": "doc['_routing'].value"
      }
    }
  }
}

示例:获取_parent字段

如果你还在使用支持_parent字段的旧版本Elasticsearch(提醒下:现在官方更推荐用join数据类型替代_parent,有条件的话建议升级适配),同样用doc对象就能访问:

{
  "query": { "match_all": {} },
  "script_fields": {
    "custom_parent": {
      "script": {
        "lang": "painless",
        "source": "doc['_parent'].value"
      }
    }
  }
}

额外小提示

  • 确认元字段已被索引:像_routing这类常用元字段默认是开启索引的,但如果有特殊配置,得先确认它能被doc对象访问到。
  • 如果只是单纯获取元字段不需要脚本处理,直接用fields参数会更高效:
    {
      "query": { "match_all": {} },
      "fields": ["_routing", "_parent"]
    }
    

内容的提问来源于stack exchange,提问作者bornTalented

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 12:25:29