Appearance
索引入门
索引是什么?
在 Elasticsearch 中,索引(Index) 可以理解为关系型数据库里的**“表”:它是具有相同映射(或兼容映射)的文档的集合**,并且有一个在集群内唯一的名称。
索引名命名规范
- 必须小写。
- 不能包含
\ / * ? " < > | , # : 空格等特殊字符。 - 不能以
-、_、+开头。 - 建议使用有意义的英文或数字,如
products、logs-2024。
创建索引
创建空索引
使用 PUT 请求,路径为索引名:
http
PUT /my_index若索引不存在则会创建;若已存在且未指定 body,可能返回 400(需先删除或使用不同名称)。返回示例:
json
{
"acknowledged" : true,
"shards_acknowledged" : true,
"index" : "my_index"
}带 settings 创建(分片与副本)
创建时可在 body 中指定 settings,例如主分片数、副本数:
http
PUT /my_index
{
"settings": {
"number_of_shards": 1,
"number_of_replicas": 0
}
}number_of_shards:主分片数,创建后一般不可改(7.x 默认 1,8.x 默认 1)。number_of_replicas:每个主分片的副本数,可后续修改。单节点学习时可设为 0。
自动创建索引
若在写入文档时指定的索引不存在,Elasticsearch 会自动创建该索引(使用默认 settings 和动态映射)。若希望禁止自动创建,可在集群配置中设置:
yaml
action.auto_create_index: false生产环境有时会关闭自动创建,改为通过模板或脚本统一创建索引。
查看与删除索引
查看索引
- 查看单个索引(含 mapping、settings 等):
http
GET /my_index- 查看所有索引(简洁列表,常用):
http
GET _cat/indices?vv 表示显示表头。返回列包括索引名、健康状态、分片数、文档数、存储大小等。
删除索引
http
DELETE /my_index注意:删除索引会删除其中所有文档和映射,且不可恢复,操作前请确认。
索引的打开与关闭
- 关闭索引:索引不再提供读写,但保留在集群元数据中,可节省资源。关闭后不能搜索、不能写入。
http
POST /my_index/_close- 打开索引:恢复为正常可读写状态。
http
POST /my_index/_open适合对暂时不用的历史索引做“归档”式关闭,需要时再打开。