1.通过Kibana 输入命令
{
"index": {
"analysis": {
"analyzer": {
"ik_pinyin_analyzer": {
"type": "custom",
"tokenizer": "ik_smart",
"filter": ["my_pinyin", "word_delimiter"]
},
"pinyin_analyzer": {
"type": "custom",
"tokenizer": "ik_max_word",
"filter": ["my_pinyin", "word_delimiter"]
}
},
"filter": {
"my_pinyin": {
"type" : "pinyin",
"keep_separate_first_letter" : false,
"keep_full_pinyin" : true,
"keep_original" : true,
"limit_first_letter_length" : 16,
"lowercase" : true,
"remove_duplicated_term" : true
}
}
}
}
}
注意:
“keep_separate_first_letter” : 启用该选项时,将保留第一个字母分开,例如:刘德华> l,d,h,默认:false,注意:查询结果也许是太模糊,由于长期过频
“keep_full_pinyin” : 当启用该选项,例如:刘德华> [ liu,de,hua],默认值:true
“keep_original” : 启用此选项时,也将保留原始输入,默认值:false
“limit_first_letter_length” : 设置first_letter结果的最大长度,默认值:16
“lowercase” : 小写非中文字母,默认值:true
“remove_duplicated_term” : 启用此选项后,将删除重复的术语以保存索引,例如:de的> de,default:false,注意:位置相关的查询可能会受到影响
2 Java api 通过设置settings
private Map get1() {
Map<String, Object> ik_pinyin_analyzer = new HashMap<>();
ik_pinyin_analyzer.put("type", "custom");
ik_pinyin_analyzer.put("tokenizer", "ik_smart");
List<String> list1 = new ArrayList<>();
list1.add("my_pinyin");
list1.add("word_delimiter");
ik_pinyin_analyzer.put("filter", list1);
Map<String, Object> analyzer = new HashMap<>();
analyzer.put("ik_pinyin_analyzer", ik_pinyin_analyzer);
Map<String, Object> pinyin_analyzer = new HashMap<>();
pinyin_analyzer.put("type", "custom");
pinyin_analyzer.put("tokenizer", "ik_max_word");
List<String> list = new ArrayList<>();
list.add("my_pinyin");
list.add("word_delimiter");
pinyin_analyzer.put("filter", list);
analyzer.put("pinyin_analyzer", pinyin_analyzer);
Map<String, Object> filter = new HashMap<>();
Map<String, Object> my_pinyin = new HashMap<>();
my_pinyin.put("type", "pinyin");
my_pinyin.put("keep_separate_first_letter", false);
my_pinyin.put("keep_full_pinyin", true);
my_pinyin.put("keep_original", true);
my_pinyin.put("limit_first_letter_length", 16);
my_pinyin.put("lowercase", true);
my_pinyin.put("remove_duplicated_term", true);
filter.put("my_pinyin", my_pinyin);
Map<String, Object> analysis = new HashMap<>();
analysis.put("analyzer", analyzer);
analysis.put("filter", filter);
Map<String, Object> index = new HashMap<>();
index.put("analysis", analysis);
index.put("number_of_shards", 3);
index.put("number_of_replicas", 0);
return index;
}
3. 查看设置是否成功