他的回复:
首先按照产品文档步骤添加词典文件切换为omm用户,准备进行后续操作。su - omm进入Elasticsearch集群中,任一节点的IK插件目录,新建词典文件。例如“test1.dic”:cd ${BIGDATA_HOME}/FusionInsight_Elasticsearch_8.0.2/install/FusionInsight-Elasticsearch-7.6.0/elasticsearch/plugins/ik/config/touch test1.dic编辑词典文件,插入自定义分词。例如添加一个分词为“测试分词”,一个分词占据单独的一行。在vim中直接进行转换文件编码,转换成utf-8格式。:set fileencoding=utf-8 执行:wq保存。修改配置文件dynamic.xml。?xml version="1.0" encoding="UTF-8"?> 动态配置 test2.dic 测试分词器的热加载是否生效curl -XGET --tlsv1.2 --negotiate -k -u : "https://8.5.251.10:24102/_analyze?pretty" -H 'Content-Type: application/json' -d' { "analyzer":"ik_smart", "text":"测试分词" }' { "tokens" : [ { "token" : "测试", "start_offset" : 0, "end_offset" : 2, "type" : "CN_WORD", "position" : 0 }, { "token" : "分词", "start_offset" : 2, "end_offset" : 4, "type" : "CN_WORD", "position" : 1 } ] } 可以看到,分词结果并不符合预期。 查看服务端日志,我们发现了一个报错。 [2021-02-02T10:58:04,002][ERROR][pool-13-thread-1][o.w.a.d.Monitor] [[email]EsNode1@8.5.251.10[/email]] Failed to watch dynamic.dic : java.io.IOException: User limit of inotify watches reached at sun.nio.fs.LinuxWatchService$Poller.implRegister(LinuxWatchService.java:264) ~[?:1.8.0_201] at sun.nio.fs.AbstractPoller.processRequests(AbstractPoller.java:260) ~[?:1.8.0_201] at sun.nio.fs.LinuxWatchService$Poller.run(LinuxWatchService.java:364) ~[?:1.8.0_201] at java.lang.Thread.run(Thread.java:748) [?:1.8.0_201] 然后重启实例 重启后,我们修改test2.dic,添加新的分词:“加班就要给加班费” 可以看到服务端日志打印: [2021-02-02T12:05:32,524][INFO ][pool-13-thread-1][o.w.a.d.Dictionary ] [[email]EsNode1@8.5.251.10[/email]] File changed:.test2.dic.swp,ENTRY_CREATE [2021-02-02T12:05:32,525][INFO ][pool-13-thread-1][o.w.a.d.Dictionary ] [[email]EsNode1@8.5.251.10[/email]] File changed:.test2.dic.swx,ENTRY_CREATE [2021-02-02T12:05:32,525][INFO ][pool-13-thread-1][o.w.a.d.Dictionary ] [[email]EsNode1@8.5.251.10[/email]] File changed:.test2.dic.swx,ENTRY_DELETE [2021-02-02T12:05:32,525][INFO ][pool-13-thread-1][o.w.a.d.Dictionary ] [[email]EsNode1@8.5.251.10[/email]] File changed:.test2.dic.swp,ENTRY_DELETE [2021-02-02T12:05:32,525][INFO ][pool-13-thread-1][o.w.a.d.Dictionary ] [[email]EsNode1@8.5.251.10[/email]] File changed:.test2.dic.swp,ENTRY_CREATE [2021-02-02T12:05:32,525][INFO ][pool-13-thread-1][o.w.a.d.Dictionary ] [[email]EsNode1@8.5.251.10[/email]] File changed:.test2.dic.swp,ENTRY_MODIFY [2021-02-02T12:05:37,761][INFO ][pool-13-thread-1][o.w.a.d.Dictionary ] [[email]EsNode1@8.5.251.10[/email]] File changed:.test2.dic.swp,ENTRY_MODIFY [2021-02-02T12:05:40,538][INFO ][pool-13-thread-1][o.w.a.d.Dictionary ] [[email]EsNode1@8.5.251.10[/email]] File changed:4913,ENTRY_CREATE [2021-02-02T12:05:40,538][INFO ][pool-13-thread-1][o.w.a.d.Dictionary ] [[email]EsNode1@8.5.251.10[/email]] File changed:4913,ENTRY_MODIFY [2021-02-02T12:05:40,538][INFO ][pool-13-thread-1][o.w.a.d.Dictionary ] [[email]EsNode1@8.5.251.10[/email]] File changed:4913,ENTRY_DELETE [2021-02-02T12:05:40,538][INFO ][pool-13-thread-1][o.w.a.d.Dictionary ] [[email]EsNode1@8.5.251.10[/email]] File changed:test2.dic,ENTRY_DELETE [2021-02-02T12:05:40,539][INFO ][pool-13-thread-1][o.w.a.d.Dictionary ] [[email]EsNode1@8.5.251.10[/email]] File changed:test2.dic~,ENTRY_CREATE [2021-02-02T12:05:40,539][INFO ][pool-13-thread-1][o.w.a.d.Dictionary ] [[email]EsNode1@8.5.251.10[/email]] File changed:test2.dic,ENTRY_CREATE [2021-02-02T12:05:40,539][INFO ][pool-13-thread-1][o.w.a.d.Dictionary ] [[email]EsNode1@8.5.251.10[/email]] File changed:test2.dic,ENTRY_MODIFY [2021-02-02T12:05:40,539][INFO ][pool-13-thread-1][o.w.a.d.Dictionary ] [[email]EsNode1@8.5.251.10[/email]] File changed:test2.dic,ENTRY_MODIFY [2021-02-02T12:05:40,539][INFO ][pool-13-thread-1][o.w.a.d.Dictionary ] [[email]EsNode1@8.5.251.10[/email]] File changed:.test2.dic.swp,ENTRY_MODIFY [2021-02-02T12:05:40,539][INFO ][pool-13-thread-1][o.w.a.d.Dictionary ] [[email]EsNode1@8.5.251.10[/email]] File changed:test2.dic~,ENTRY_DELETE [2021-02-02T12:05:40,539][INFO ][pool-13-thread-1][o.w.a.d.Dictionary ] [[email]EsNode1@8.5.251.10[/email]] File changed:.test2.dic.swp,ENTRY_DELETE 表示词库已经动态更新了。 测试分词器的热加载是否生效 curl -XGET --tlsv1.2 --negotiate -k -u : "https://8.5.251.10:24102/_analyze?pretty" -H 'Content-Type: application/json' -d' { "analyzer":"ik_smart", "text":"加班就要给加班费" }' { "tokens" : [ { "token" : "加班就要给加班费", "start_offset" : 0, "end_offset" : 8, "type" : "CN_WORD", "position" : 0 } ] }分词结果符合预期。