es 中的 索引 记录 字段 分别代表什么意思?
Criado em: 10 de dezembro de 2025
Criado em: 10 de dezembro de 2025
es 中的 索引 记录 字段 分别代表什么意思?
下面用最常见的 Elasticsearch(简称 ES) 概念来解释 “索引 / 记录 / 字段” 分别是什么意思,以及它们之间的关系。
可以把 索引 想象成数据库中的 表(Table)。
例如:
textusers 索引 products 索引 logs-2025.01 索引
在 ES 中一条“记录”对应一个 文档(Document),类似于数据库中的 行(Row)。
例如:
json{ "id": 1, "name": "Anna", "age": 30 }
这就是一个文档。
字段就是文档中的 键值对(Key-Value),类似数据库中的 列(Column)。
text、keyword、integer例如:
上面的文档包含 3 个字段:
textid name age
每个字段 ES 会以自己的方式进行索引处理(特别是 text 还会进行分词)。
| ES 概念 | 类比传统数据库 | 含义 |
|---|---|---|
| Index(索引) | Table 表 | 一组文档的集合 |
| Document(文档/记录) | Row 行 | 一条记录,JSON 对象 |
| Field(字段) | Column 列 | 文档中的属性 |
关系示例:
textIndex:users ├── Document 1 │ ├── Field: name │ ├── Field: age │ ├── Field: email ├── Document 2 │ ├── Field: name │ ├── Field: age │ ├── Field: email
我可以继续帮你解释:
你需要我继续讲吗?
kibana 怎么查索引的模版
在 Kibana 中查看 Elasticsearch 索引模板(Index Template) 有多种方式,取决于你使用的 Kibana 版本(Legacy vs 新版)。下面给出最完整的查询方法。
Kibana 的 Dev Tools → Console 是最直接、最常用的方式。
jsonGET _index_template
jsonGET _index_template/<template_name>
jsonGET _template
查看某个 legacy 模板:
jsonGET _template/<name>
路径:
Stack Management → Index Management → Index Templates
在这里你可以看到:
可直接点进去查看 mappings、settings、index patterns 等。
无论在 Dev Tools 还是 UI 中,你都可以看到:
例如:
json"index_patterns": ["logs-*"]
包括:
例如:
json"composed_of": ["base-settings", "user-mappings"]
jsonGET _index_template/my-template
可能返回:
json{ "index_templates": [ { "name": "my-template", "index_template": { "index_patterns": ["myindex-*"], "template": { "settings": { ... }, "mappings": { ... }, "aliases": { ... } }, "composed_of": [], "priority": 100 } } ] }
如果你告诉我你使用的 ES / Kibana 版本号,我还能给你更精确的界面路径和命令。
我这是很老的es 版本,怎么查看目前 es 是什么版本,以及对应了什么 模版查询的语句?
下面给你 老版本 Elasticsearch 中最通用、最保险的“查看版本”与“查询模板”方法(适用于 ES 1.x / 2.x / 5.x / 6.x / 7.x 的旧指令集)。
无论你的版本多旧,都可以通过以下方式查看:
在 Kibana 的 Dev Tools → Console 输入:
jsonGET /
返回结果中会显示版本,例如:
json{ "name": "node-1", "cluster_name": "my-es", "version": { "number": "2.4.6" } }
主字段是:
version.number
bashcurl -XGET http://localhost:9200/
同样会显示版本号。
老版本 ES 的模板查询方式是不同的,取决于版本。
下面给你一个清晰表格:
| ES 版本 | 模板 API | 查询所有模板 | 查询单个模板 |
|---|---|---|---|
| 1.x / 2.x / 5.x / 6.x | Legacy Template | GET _template | GET _template/<name> |
| 7.x(新模板引入) | Index Template v2 | GET _index_template | GET _index_template/<name> |
| 7.x 仍兼容旧模板 | Legacy Template | GET _template | GET _template/<name> |
| 8.x | Index Template v2(主流) | GET _index_template | GET _index_template/<name> |
👉 你应该使用:
jsonGET _template
查看所有模板。
或:
jsonGET _template/logs_template
查看名为 logs_template 的模板。
老 ES 没有直接 API,但你可以:
jsonGET _template
输出示例:
json{ "my_logs_template": { "order": 0, "index_patterns": ["logs-*"], "settings": { ... }, "mappings": { ... } } }
如果你的索引名类似 logs-2020.01.01,那就是它匹配的模板。
例如你说:“这是 2016 年部署的 ES”
我可以帮你精准判断应该使用:
并给你对应的模板结构解释。
你可以把:
GET /
的返回结果贴给我,我会帮你确认版本,并给出更准确的命令和操作方式。