Elasticsearch 中文字母数字混合字符串 首字母匹配
1、需求
某索引中有text类型字段name,内容为中文字母数组混合字符串组成,比如"name":"宝马330Li",现需要用该字段的首
字母缩写即:“bm3”,“bm33”,"bm330","bm330l"进行匹配;
2、解决方案
1、采用拼音分词插件elasticsearch-analysis-pinyin对字段进行首字母分词
//创建索引
PUT /test?include_type_name=false
{
"settings": {
"number_of_shards": 5,
"analysis": {
"analyzer": {
"my_comma_analyzer": {
"filter":"lowercase",
"tokenizer": "my_comma_tokenizer"
},
"prefix_pinyin_analyzer": {
"tokenizer": "standard",
"filter": [
"lowercase",
"prefix_pinyin"
]
}
},
"filter": {
"prefix_pinyin": {
"type": "pinyin",
"keep_first_letter": true,
"keep_seperate_first_letter": true,
"keep_full_pinyin": false,
"none_chinese_pinyin_tokenize": false,
"keep_original": false
}
},
"tokenizer": {
"my_comma_tokenizer": {
"type": "pattern",
"pattern": ","
}
}
}
},
"mappings": {
"properties": {
"name":{
"type": "text",
"analyzer": "prefix_pinyin_analyzer&#