elasticsearch-修改IK分词器源码来基于mysql热更新词库

热更新

每次都是在es的扩展词典中,手动添加新词语,很坑
(1)每次添加完,都要重启es才能生效,非常麻烦
(2)es是分布式的,可能有数百个节点,你不能每次都一个一个节点上面去修改

es不停机,直接我们在外部某个地方添加新的词语,es中立即热加载到这些新词语

热更新的方案

(1)修改ik分词器源码,然后手动支持从mysql中每隔一定时间,自动加载新的词库
(2)基于ik分词器原生支持的热更新方案,部署一个web服务器,提供一个http接口,通过modified和tag两个http响应头,来提供词语的热更新

用第一种方案,第二种,ik git社区官方都不建议采用,觉得不太稳定

1、下载源码

https://github.com/medcl/elasticsearch-analysis-ik/tree/v5.2.0

ik分词器,是个标准的java maven工程,直接导入eclipse就可以看到源码

2、修改源码

Dictionary类,169行:Dictionary单例类的初始化方法,在这里需要创建一个我们自定义的线程,并且启动它
HotDictReloadThread类:就是死循环,不断调用Dictionary.getSingleton().reLoadMainDict(),去重新加载词典
Dictionary类,389行:this.loadMySQLExtDict();
Dictionary类,683行:this.loadMySQLStopwordDict();

3、mvn package打包代码

target\releases\elasticsearch-analysis-ik-5.2.0.zip

4、解压缩ik压缩包

将mysql驱动jar,放入ik的目录下

5、修改jdbc相关配置

6、重启es

观察日志,日志中就会显示我们打印的那些东西,比如加载了什么配置,加载了什么词语,什么停用词

7、在mysql中添加词库与停用词

8、分词实验,验证热更新生效

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: 要在 Elasticsearch 上安装 IK 分词,需要以下几步操作: 1. 下载 IK 分词插件,并将其复制到 Elasticsearch 插件目录中。 2. 使用 Elasticsearch 的命令行工具安装插件,例如: ``` bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.10.0/elasticsearch-analysis-ik-7.10.0.zip ``` 3. 重启 Elasticsearch 节点,使 IK 分词生效。 4. 在你的索引的映射中使用 IK 分词,例如: ``` PUT my_index { "mappings": { "_doc": { "properties": { "message": { "type": "text", "analyzer": "ik_max_word" } } } } } ``` 这样 IK 分词就安装完成了。 ### 回答2: Elasticsearch是一个广泛应用于全文搜索、日志分析、业务指标和数据分析等领域的开搜索引擎,对于中文搜索的支持是非常重要的。而IK分词为其提供了中文分词的支持。本答案将为您解释如何安装IK分词。 1. 下载IK分词: 首先需要下载适用于您当前使用的Elasticsearch版本的IK分词,可以在开中国上下载。下载后将其解压至任意目录,例如解压到“C:\ik”。 2. 安装IK分词: 将解压后的IK分词安装到Elasticsearch。只需在Elasticsearch的根目录下启动终端,通过以下命令安装IK分词: ``` ./bin/elasticsearch-plugin install file:///PATH_TO_FILE/ik-plugin-x.x.x.zip ``` 其中,PATH_TO_FILE即为解压后保存IK分词的路径。"x.x.x"为IK分词的版本号,替换为实际的版本号。 3. 测试IK分词: 在Elasticsearch中创建索引,指定使用IK分词: ``` PUT /my_index { "settings": { "analysis": { "analyzer": { "ik_analyzer": { "type": "custom", "tokenizer": "ik_smart" } } } } } ``` 以上示例将IK分词设置为my_index索引的默认分词。可通过以下命令来测试IK分词的效果: ``` GET /my_index/_analyze { "analyzer": "ik_analyzer", "text": "中文分词测试" } ``` 以上即为安装IK分词的步骤和测试方法,通过以上步骤可以快速、方便地为您的Elasticsearch添加中文搜索的支持。 ### 回答3: Elasticsearch是一个开的搜索引擎,它可以帮助用户快速和准确地检索大量的数据。而IK分词则是一款中文分词插件,它可以将中文文本分解为词语,从而提高搜索结果的准确性。那么,如何在Elasticsearch中安装IK分词呢? 安装方法如下: Step 1:下载ik分词插件 可以从GitHub下载最新的ik分词此时版本为7.11.2 wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.11.2/elasticsearch-analysis-ik-7.11.2.zip Step 2:解压ik插件 将下载好的插件解压到elasticsearch的plugins目录中: unzip elasticsearch-analysis-ik-7.11.2.zip -d /path/to/elasticsearch-<version>/plugins/ Step 3:重启ElasticSearch 重启Elasticsearch服务,使插件生效: ./elasticsearch Step 4:安装分词 使用curl命令安装中文分词: curl -H "Content-Type: application/json" -X PUT --data-binary @/path/to/config/location/ik_index_settings.json http://localhost:9200/_settings curl -H "Content-Type: application/json" -X PUT --data-binary @/path/to/config/location/ik_synonyms.json http://localhost:9200/_settings Step 5:创建测试索引 为了测试是否安装成功,可以创建一个测试索引和mapping: curl -H "Content-Type: application/json" -X PUT --data-binary @/path/to/config/location/ik_test_index.json http://localhost:9200/ik_test 注意事项: - 确认Elasticsearch和插件版本是否一致。 - 插件应该安装在每个Elasticsearch节点上的plugins目录中。 - 确认分词的配置是否正确。 - 在添加文档时,使用正确的字段名和正确的分词。 总之,以上是在Elasticsearch中安装IK分词的方法,如果您遇到了什么问题,请详细阅读官方文档或向社区寻求帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值