索引的操作
总结
- 索引相当于 MySQL 的数据库,CRUD 操作都是 REST 风格
auto_create_index默认开启,写文档时索引不存在会自动创建- 索引可以关闭(停止读写但保留数据),不用了再删
1. 自动创建索引
ES 默认开启 auto_create_index,写文档时如果索引不存在会自动创建。生产环境一般建议关掉,避免误操作建出脏索引。
查看当前配置:
GET localhost:9200/_cluster/settings
修改配置:
PUT localhost:9200/_cluster/settings
{
"persistent": {
"action.auto_create_index": "false"
}
}
2. 索引 CRUD
新增索引
PUT localhost:9200/nba
查询索引
GET localhost:9200/nba
删除索引
DELETE localhost:9200/nba
批量查看
GET localhost:9200/nba,cba
# 查看全部
GET localhost:9200/_all
GET localhost:9200/_cat/indices?v
判断索引是否存在
HEAD localhost:9200/nba
HTTP 200 代表存在,404 代表不存在。
3. 关闭 / 开启索引
索引关闭后停止读写,但数据还在,适合临时下线某个索引。
POST localhost:9200/nba/_close
POST localhost:9200/nba/_open
4. 面试相关
ES 的索引设计和 MySQL 的建库类似,如果你被问到索引设计的考量,可以重点准备 ES面试题 中的分片设计、写入原理相关问题。