今天突然遇到文件名搜不到的情况,查看了ES
DSL语句,发现文件名使用query_string查询,而文件名是keyword类型字段。
经过实验和上网搜索,发现 keyword 类型字段是不分词的,query_string 查询是分词的,只有完全匹配才能使用 query_string 查询到 keyword 类型字段,因此模糊匹配的方式查询 keyword 类型字段,是行不通的,又是一通修改检索语句,牵一发动全身,全文检索语句迎来了一次完全修改。
要点:
-
keyword类型的字段模糊检索需要用wildcard来检索 -
query_string查询是提前分词的,适合查询text类型的字段 -
keyword类型字段不分词