2026/8/14 13:22:41

Windows部署ElasticSearch,安装IK分词器

Windows部署ElasticSearch,安装IK分词器 下载ElasticSearch安装包直接打开这个链接Download Elasticsearch | Elastic页面是这样的点击 Windows 下载的就是文件压缩包当前最新的版本是 9.5.0可以在 Summary 中选择历史版本View past releases。下载得到的是 ES 的压缩包直接解压即可我解压的路径是没有中文字符的我也不清楚文件路径有中文字符会不会有什么问题。我记得我大一刚上学的时候用户名就是中文一直用到大三才第一次重装系统才改成英文在此之前都没出现过什么问题先来认识一下 ES 的目录结构bin可执行文件目录。config配置文件目录。jdkES 在 9.5.0 版本是自带 jdk 的不需要本地安装 jdk我在网上搜到是 7.x 版本才自带 jdk。plugins插件目录之后安装 IK 分词器就是要放到这里。修改配置进入 config 目录打开 elasticsearch.yml 文件。直接全部删除然后复制粘贴下面的内容就可以了。cluster.name: my-es # 集群名称 node.name: node-1 # 节点名称 path.data: C:\Users\admin\Downloads\elasticsearch-9.5.0-windows-x86_64\data # 数据存储路径 path.logs: C:\Users\admin\Downloads\elasticsearch-9.5.0-windows-x86_64\logs # 日志存储路径 network.host: localhost # 绑定本地地址 http.port: 9200 # 端口默认9200 discovery.type: single-node # 单节点模式一个集群里面只有一个节点不需要发现其他节点 xpack.security.http.ssl.enabled: false # 关闭HTTPS方便本地访问 xpack.security.enabled: false # 免密码登录Ctrl S 保存修改然后进入 bin 目录双击 elasticsearch.bat 启动 ES 程序会打开一个命令行界面关闭这个界面就是关闭 ES 进程。在我的电脑上启动比较慢大概要等 30-40 秒才能完全启动成功。在浏览器输入 http://127.0.0.1:9200 返回下面的内容表示启动成功。这里的 http://127.0.0.1:9200 都是在 elasticsearch.yml 文件中配置的包括返回的响应中name 和 cluster_name 都是我们自己配置的内容。ES 启动成功可以通过 http 请求获取 ES 的服务可以安装 ES 的可视化工具比如 Kibana。当然ES 需要用 http 请求调用接口只需要能够发送 http 请求就可以了不一定要安装 Kibana也可以用 postman、apifox 这些接口测试软件。甚至可以编写 python、java 程序发送 http 请求。但是如果你是通过 js 发送请求那就遭老罪了。fetch(http://127.0.0.1:9200, { method: GET })发送最简单的 GET 请求然后就可以在控制台上看到熟悉的跨域报错需要在 elasticsearch.yml 中添加跨域配置http.cors.enabled: true http.cors.allow-origin: * http.cors.allow-methods: OPTIONS, HEAD, GET, POST, PUT, DELETE http.cors.allow-headers: * http.cors.allow-credentials: true修改配置后需要重启服务才能生效现在就可以用 js 发送 http 请求了。安装 IK 分词器IK 分词器在 github 的地址IK分词器我们赶紧打开链接进入 Release 吧。但是插件已经不在 github 发布了需要去 索引analysis-ik/stable/ 这里下载在下载插件的时候要注意和 ES 的版本保持一致就比如我安装的 ES 是 9.5.0这里的插件也要下载 9.5.0 的。下载完之后解压将解压得到的文件放到 plugins 目录下面即可。怎么验证是否安装成功呢我们可以用中文进行分词检测因为 ES 自带的分词器是偏向于英文的如果是中文句子会把每个汉字当成一个独立的字符进行分词是不能辨别汉字的意思的。fetch(http://localhost:9200/_analyze, { method: POST, headers: { Content-Type: application/json }, body: JSON.stringify({ analyzer: standard, text: 绿色的森林 }) });如果用标准分词器结果是这样的现在可以使用 IK 分词器提供的 ik_smart 和 ik_max_word 进行分词ik_smart智能分词ik_max_word尽可能分出更多的词入库的时候可以用 ik_max_word 分词提供足够大的样本。查找的时候用 ik_smart 分词。换成 ik_smart 之后就可以正常理解中文意思了fetch(http://localhost:9200/_analyze, { method: POST, headers: { Content-Type: application/json }, body: JSON.stringify({ analyzer: ik_smart, text: 绿色的森林 }) });jvm 堆内存优化现在 ES 可以启动IK 分词器也安装好了但是这个程序非常吃内存默认可以吃掉 8G 内存。这是没有调整 jdk 堆内存的情况我的笔记本是 16G 内存再加上其他程序内存占用就来到了 80% 左右。进入 config 目录打开这里的 jvm.options 文件。Xms初始堆内存Xmx最大堆内存我改成了 2g之后重启服务现在最大内存就只占用 2g 左右了。