创建索引时指定分词
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| PUT bunny { "mappings": { "properties": { "name": { "type": "keyword" }, "address": { "type": "text", "analyzer": "ik_max_word" } } } }
|
测试分词器的分词结果
1 2 3 4 5
| GET /_analyze { "analyzer": "ik_max_word", "text": "身无彩凤双飞翼" }
|
该命令基本无实际意义,只是使用分词后如果不确定是否分词正确,确认分词情况的。基于该结果决定是否添加自定义的分词规则。
1 2 3 4 5 6 7 8 9 10 11 12 13
| GET _analyze { "analyzer": "ik_max_word", "text": "身无彩凤双飞翼" }
# standard分词器 GET _analyze { "analyzer": "standard", "text": "身无彩凤双飞翼" }
|
上面代码执行结果对比可知,有中文分词器会正确识别分词,默认分词显然不是我们需要的结果,自行执行对比即可。
在有分词的字段上查询
1 2 3 4 5 6 7 8 9
| GET /bunny/_search { "query": { "match": { "address": "中国北京" } } }
|
由于分词结果为:中国北京、中国、北京。所以包含这三个值的均被查出。如果没有中文分词器将会识别为4个汉字。