前言
最近在做视频搜索功能,需要在 Windows 环境下搭建 Elasticsearch 环境。本以为是个简单的任务,结果踩了一堆坑,记录一下供后人参考。
环境信息
-
操作系统: Windows 11
-
ES 版本: 8.11.0
-
IK 分词器版本: 8.11.0
-
JDK: ES 自带
踩坑过程
坑 1:路径空格问题
问题 : 把 ES 解压到 D:\Program Files (x86)\ 目录下,启动时各种报错。
原因: 路径中包含空格和括号,IK 分词器无法正确读取配置文件。
解决 : 把 ES 移到无空格路径,如 D:\elasticsearch-8.11.0
坑 2:安全认证配置
问题: ES 8.x 默认开启安全认证,启动后无法直接访问。
解决 : 修改 config/elasticsearch.yml:
# 关闭安全认证
discovery.type: single-node
xpack.security.enabled: false
注意: 同时需要注释掉 SSL 相关配置,否则还会报错。
坑 3:IK 分词器安装
问题 : 手动解压 IK 插件到 plugins 目录,启动报错缺少 plugin-descriptor.properties。
原因: 下载的文件不对,或者解压方式错误。
正确安装方式:
# 在线安装(推荐)
elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v8.11.0/elasticsearch-analysis-ik-8.11.0.zip
# 或手动安装:下载 zip 后解压到 plugins/ik/ 目录
坑 4:配置重复问题
问题 : 修改配置时不小心添加了重复的字段,如 http.host 出现两次。
解决 : 仔细检查 elasticsearch.yml,确保没有重复配置项。
坑 5:keystore 残留
问题: 之前配置过 SSL,关闭安全认证后仍然报错找不到密码。
解决 : 删除 config/elasticsearch.keystore 文件,重启 ES。
最终配置
# ======================== Elasticsearch Configuration =========================
# 单机模式
discovery.type: single-node
# 关闭安全认证
xpack.security.enabled: false
# 允许跨域
http.cors.enabled: true
http.cors.allow-origin: "*"
# 绑定地址
http.host: 0.0.0.0
# 注释掉以下配置(如果存在)
# xpack.security.enrollment.enabled: true
# xpack.security.http.ssl.enabled: true
# xpack.security.transport.ssl.enabled: true
# cluster.initial_master_nodes: ["xxx"]
验证安装
启动 ES 后访问:
curl http://localhost:9200
返回 JSON 说明成功。
验证 IK 分词器:
# 创建索引时使用 ik_max_word 分词器
PUT /test
{
"mappings": {
"properties": {
"content": {
"type": "text",
"analyzer": "ik_max_word"
}
}
}
}
# 测试分词
POST /test/_analyze
{
"analyzer": "ik_max_word",
"text": "中华人民共和国"
}
总结
-
路径不要有中文、空格、特殊字符
-
IK 分词器版本必须和 ES 版本匹配
-
修改配置时仔细检查,避免重复
-
有问题先看日志,一般在
logs/elasticsearch.log
参考
如果这篇文章帮到你,请点个赞 👍