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

如何在Elasticsearch中仅获取索引的字段名而非字段值

获取Elasticsearch指定索引的所有字段名(不含类型)

以下是几种直接获取仅字段名的实用方法:

方法1:使用_cat/fields API(简单直观)

_cat/fields API专门用于列出索引的字段信息,加上format=json参数可返回JSON格式结果,再通过工具提取字段名:

# 请求获取字段基础信息
GET /my_index/_cat/fields?v&format=json

# 用jq提取字段名数组(需安装jq工具)
curl -XGET "http://your-es-host:9200/my_index/_cat/fields?v&format=json" | jq '[.[] | .name]'

返回结果示例:

["field_1", "field_2.subfield_1", "field_2.subfield_2", "field_3.subfield_1.another_field"]

方法2:基于_field_caps请求过滤结果

你原本使用的_field_caps请求会返回字段类型,可通过jq提取结果中的字段名key:

# 结合jq过滤出仅字段名的结构
curl -XGET "http://your-es-host:9200/my_index/_field_caps?fields=*&filter_path=fields.*" | jq '{ fields: [keys(.fields)] }'

返回结果示例:

{
  "fields": ["field_1", "field_2.subfield_1", "field_2.subfield_2", "field_3.subfield_1.another_field"]
}

方法3:从索引mapping中提取(支持嵌套字段)

直接请求索引的mapping,再递归提取所有层级的字段名(包括嵌套字段):

# 请求mapping并提取字段名
curl -XGET "http://your-es-host:9200/my_index/_mapping" | jq '[path(.my_index.mappings.properties[])] | map(join("."))'

这种方法能完整获取复杂嵌套结构的字段名,适合字段层级多的索引。

注:如果没有jq工具,也可以在Kibana Dev Tools中执行GET请求后手动提取,或用Python的json模块等工具解析结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 12:30:04