概述

本文讲解 Elasticsearch 索引 CRUD 操作和 IK 分词器配置,涵盖 7.3.0 和 8.15.0 版本。

版本兼容性矩阵

组件版本备注
Elasticsearch7.3.0, 8.15.0已验证
IK Analyzer7.3.0 / 8.x必须与 ES 版本匹配
Remote DictionaryNginx 静态托管UTF-8 无 BOM

索引操作

创建索引

PUT /index-name

示例:PUT /wzkicu-index

判断索引是否存在

  • 单个索引:GET /index-name
  • 多个索引:GET /index1,index2,index3
  • 所有索引:GET _allGET /_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>

注意事项

  1. 修改配置后需重启 ES
  2. 使用 _analyze API 验证分词器是否生效
  3. 词典文件必须为 UTF-8 无 BOM 格式
  4. 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。