使用term来搜索keyword的时候查询不到结果
建立的mapping如下
PUT study8
{
“settings”: {
“analysis”: {
“filter”: {
“ITguanlin_ik_synonym_filter”: {
“type”: “synonym”,
“synonyms_path”: “analysis-ik/synonym.txt”
}
},
“analyzer”: {
“ITguanlin_ik_syno”: {
“type”: “custom”,
“tokenizer”: “ik_smart”,
“filter”: [
“ITguanlin_ik_synonym_filter”
]
},
“ITguanlin_ik_syno_max”: {
“type”: “custom”,
“tokenizer”: “ik_max_word”,
“filter”: [
“ITguanlin_ik_synonym_filter”
]
}
}
}
},
“mappings”: {
“user”: {
“dynamic”:false,
“properties”: {
“id”: {
“type”: “integer”
},
“name”: {
“type”: “keyword”
},
“age”: {
“type”: “keyword”
},
“describe”: {
“type”: “keyword”
},
“birthday”: {
“type”: “date”
},
“sex”: {
“type”: “keyword”
},
“native”: {
“type”: “text”,
“analyzer”: “ITguanlin_ik_syno”
}
}
}
}
}
对应的name属性设置的keyword
然后我们添加了一些数据
{“id”:1,“name”:“张三”,“age”:20,“describe”:“张三非常爱吃kfc”,“birthday”:“2015-05-05”,“sex”:“女”,“native”:[“湖南”,“株洲”,“芦淞区”]}
这里就以这一条为例
然后这里我使用的是term来进行搜索
GET study8/user/_search
{
“query”:{
“term”:{
“name”:“张三”
}
}
}
无法搜索出结果
然后我通过"张"或"三"来进行搜索
通过三来进行查询也能查询出结果,这就很不合理了,首先我的type是keyword类型,不会分词来进行索引,然后我使用term来查询,同样也不会分词应该是使用整个词来进行查询也就是"张三"作为一个词来查询啊,反而查询不到数据,然后我又尝试了英文的数据一切正常,望老师基于解答