概述
本文讲解 Elasticsearch 索引 CRUD 操作和 IK 分词器配置,涵盖 7.3.0 和 8.15.0 版本。
版本兼容性矩阵
| 组件 | 版本 | 备注 |
|---|---|---|
| Elasticsearch | 7.3.0, 8.15.0 | 已验证 |
| IK Analyzer | 7.3.0 / 8.x | 必须与 ES 版本匹配 |
| Remote Dictionary | Nginx 静态托管 | UTF-8 无 BOM |
索引操作
创建索引
PUT /index-name
示例:PUT /wzkicu-index
判断索引是否存在
- 单个索引:
GET /index-name - 多个索引:
GET /index1,index2,index3 - 所有索引:
GET _all或GET /_cat/indices?v
打开/关闭索引
- 打开索引:
POST /index-name/_open - 关闭索引:
POST /index-name/_close
删除索引
DELETE /index-name
健康状态
- Green:所有分片正常分配
- Yellow:至少有一个副本未分配
- Red:至少有一个主分片未分配
IK 分词器安装
安装插件
cd /opt/servers/elasticsearch-7.3.0/
bin/elasticsearch-plugin install https://get.infini.cloud/elasticsearch/analysis-ik/7.3.0
测试分词
POST _analyze
{
"analyzer": "ik_max_word",
"text": "山东省青岛市黄岛区"
}
两种模式:
- ik_max_word:最细粒度分词
- ik_smart:最粗粒度分词
远程词典配置
配置 Nginx
apt install nginx
创建词典文件
/var/www/html/stop_dict.dic- 停用词(的、了、啊、呢)/var/www/html/ext_dict.dic- 扩展词
配置 IK Analyzer
编辑 IKAnalyzer.cfg.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
<comment>IK Analyzer Extension</comment>
<entry key="remote_ext_dict">http://your-domain/ext_dict.dic</entry>
<entry key="remote_ext_stopwords">http://your-domain/stop_dict.dic</entry>
</properties>
注意事项
- 修改配置后需重启 ES
- 使用
_analyzeAPI 验证分词器是否生效 - 词典文件必须为 UTF-8 无 BOM 格式
- IK 插件版本必须与 ES 版本完全匹配
错误速查
| 症状 | 根因 | 解决方案 |
|---|---|---|
| unknown analyzer [ik_max_word] | IK 未安装或版本不匹配 | 检查 plugins/analysis-ik 目录;重新安装匹配版本 |
| 词典修改未生效 | URL 不可达或编码问题 | 用 curl 验证;确保 UTF-8;重启 ES |
| 多索引查询返回 404 | 部分索引不存在 | 用 _cat/indices?v 确认 |
| 集群健康 yellow | 单节点副本未分配 | 设置副本数为 0 或添加更多节点 |
| 集群健康 red | 主分片分配失败 | 检查 _cluster/allocation/explain |
关键点:IK 分词器版本必须与 Elasticsearch 版本匹配,配置修改后必须重启 ES。