analysis-ik icon indicating copy to clipboard operation
analysis-ik copied to clipboard

es部署ik分词器后新建索引报错,Failed to parse mapping [_doc]: analyzer [ik_smart] has not been configured in mappings

Open XieCJ opened this issue 4 years ago • 9 comments

es和ik都是7.10.1版本 es有一个主节点,两个子节点,配置如下: 主节点配置 cluster.name: master-es node.name: master http.cors.enabled: true http.cors.allow-origin: "*" node.master: true network.host: 127.0.0.1

子节点1配置 cluster.name: master-es node.name: node01 network.host: 127.0.0.1 http.port: 9201 discovery.zen.ping.unicast.hosts: ["127.0.0.1"]

子节点2配置 cluster.name: master-es node.name: node02 network.host: 127.0.0.1 http.port: 9202 discovery.zen.ping.unicast.hosts: ["127.0.0.1"]

ik分词器的文件放下了主节点elasticsearch-7.10.1\plugins\ik目录下,如图 Snipaste_2020-12-31_11-33-16

使用kibana写下面语句 POST _analyze { "analyzer": "ik_smart", "text": "我和我的祖国" } 这个命令使用就是正常的,结果如下 { "tokens" : [ { "token" : "我", "start_offset" : 0, "end_offset" : 1, "type" : "CN_CHAR", "position" : 0 }, { "token" : "和我", "start_offset" : 1, "end_offset" : 3, "type" : "CN_WORD", "position" : 1 }, { "token" : "的", "start_offset" : 3, "end_offset" : 4, "type" : "CN_CHAR", "position" : 2 }, { "token" : "祖国", "start_offset" : 4, "end_offset" : 6, "type" : "CN_WORD", "position" : 3 } ] } 但是我使用一下语句 PUT test { "mappings": { "properties": { "title": { "type": "text", "analyzer": "ik_smart" } } } } 就会报一下错误 { "error" : { "root_cause" : [ { "type" : "mapper_parsing_exception", "reason" : "Failed to parse mapping [_doc]: analyzer [ik_smart] has not been configured in mappings" } ], "type" : "mapper_parsing_exception", "reason" : "Failed to parse mapping [_doc]: analyzer [ik_smart] has not been configured in mappings", "caused_by" : { "type" : "illegal_argument_exception", "reason" : "analyzer [ik_smart] has not been configured in mappings" } }, "status" : 400 }

Snipaste_2020-12-31_11-35-48

麻烦能否告知哪里出错了

XieCJ avatar Dec 31 '20 03:12 XieCJ

每个节点都要安装插件

tonitech avatar Jan 07 '21 01:01 tonitech

每个节点都要安装插件

是的,我前两天也发现了需要在每个有希望成为主节点的节点都装一下插件,因为我刚入门不知道es主节点是推举机制,所以,一直认为是第一节点是主节点,但是后来得知主节点是选举产生的。但是这带来了一个新的问题,就是当我每个有可能成为主节点的都安装插件,经过我的测试,比如我有三个节点1,2,3,经过选举2为主节点,但是我发现索引的分片永远是在2,3节点上,这和不指定分词创建的索引的结果是不同。不指定分词的情况下,创建索引,两个分片是随机分布在三个节点上的,希望能解答一下我的疑惑

XieCJ avatar Jan 07 '21 01:01 XieCJ

和你遇到了同一个问题 你是所有节点都安装了插件 然后重启以后就解决了嘛

mushanzi1216 avatar Jan 14 '21 04:01 mushanzi1216

和你遇到了同一个问题 你是所有节点都安装了插件 然后重启以后就解决了嘛

是所有有希望成为主节点的节点安装插件,es是主节点是竞争的得到的。我重启后出现了新的问题,就是分片不再是随机的啦,有一个节点得不到分片

XieCJ avatar Jan 14 '21 05:01 XieCJ

这个跟安装插件有关系? 现在所有节点都安装了插件 不管分到哪里 都不影响使用ik吧

mushanzi1216 avatar Jan 14 '21 07:01 mushanzi1216

这个跟安装插件有关系? 现在所有节点都安装了插件 不管分到哪里 都不影响使用ik吧

正常来说没有关系,分片是es的事,ik只是分词。但是当我创建索引,指定分词时就发生了这个现象,不指定分词时就没有这个现象,分片就是随机在某些节点上。最近一直在搞别的,没测试过了,改天我在测试一下看能不能复现

XieCJ avatar Jan 14 '21 09:01 XieCJ

这个跟安装插件有关系? 现在所有节点都安装了插件 不管分到哪里 都不影响使用ik吧

怎么没关系,你节点一安装有插件,节点二没安装,肯定不正常。没错分片是es的问题,可插件es不会自动安装啊

frsweety avatar Jan 14 '21 09:01 frsweety

都安装不就好了

mushanzi1216 avatar Jan 14 '21 15:01 mushanzi1216

怎么给每个节点安装ik?

DragonLittle1 avatar Oct 10 '23 13:10 DragonLittle1