今天同事找我说ES的模糊查询失效了,让我帮忙看一下是什么情况,经过mapping的查看发现那个对应的字段在入数的时候变成了text类型,导致wildcard失效,因为我们text类型在存储前会自动进行分词处理,当我们使用wildcard查询中文的时候,相当于是对拆分后的词组进行查询,该语句已经不是完整的了,正常情况下,text类型需要搭配分词器进行match查询使用,如果有中文,还需要接入IK分词器或者自定义分词器,如果我们要使用模糊查询的话要使用keyword类型,因为keyword类型默认是不会进行切分处理的.
我们也可以使用下述的语句来查看对应默认分词器的分词结果
POST/_analyze{ "analyzer": "standard", "text": "你好我是张三 i am very happy"}