我正在开发一个ES插件,其中包含一个新的分析器和一个新的过滤器。 我的elasticsearch.yml文件如下 - :
index:
analysis:
analyzer:
ik_syno:
tokenizer: ik
filter: [my_synonym_filter_ik]
ik_syno_smart:
tokenizer: ik_smart
filter: [my_synonym_filter_ik_smart]
filter:
my_synonym_filter_ik_smart:
type: org.elasticsearch.index.analysis.SynonymcnTokenFilterFactory
use_smart: true
my_synonym_filter_ik:
type: org.elasticsearch.index.analysis.SynonymcnTokenFilterFactory
use_smart: true
SynonymcnTokenFilterFactory 是我的班级。
现在,当我使用
时http://127.0.0.1:9200/newshuoshuo/_analyze?analyzer=ik_syno_smart&pretty=true
分析仪' ik_syno_smart'按预期工作。
{
"tokens" : [ {
"token" : "hello",
"start_offset" : 1,
"end_offset" : 6,
"type" : "ENGLISH",
"position" : 1
} ]
}
但是当我在我的映射调用中使用它时,它会返回错误。
这是我的索引字段
"content": {
"type": "string",
"index_analyzer": "ik_syno_smart",
"search_analyzer": "ik_smart",
"boost": "10"
},
错误日志如下:
on [shard failure [failed to update mappings][MapperParsingException[Analyzer [ik_syno_smart] not found for field [content]]]]
我做错了什么? 我的ES版本是1.7.0。
答案 0 :(得分:1)
你总是必须在所有机器上安装插件,否则ES将无法完成他的工作,因为当索引拆分为多台机器时,他们负责工作。 另外如果你使用很多插件,那么在elasticsearch.yml中有很好的属性
plugin.mandatory: mapper-attachments,lang-groovy
这将无法启动您的ES,直到您安装所有插件。不幸的是,它还无法自动设置它们,但它会阻止您忘记的事情