ElasticSearch模糊查询有多种方式方式,比如:wildcard、fuzzy、prefix都可以实现ElasticSearch模糊查询。
wildcard模糊查询
wildcard模糊查询:包含通配符表达式字段的文档,类似于于mysql的like查询。
wildcard用法:
通配符 *:它匹配任何字符序列(包括空字符)
GET /user/_search { "query": { "wildcard":{ "name":"mikechen*"} } }
上述语句可以检索到所有文档,等价于SQL中的:where name like “mikechen %”。
上面语句的通配符 *,它匹配任何字符序列,包括空字符。
fuzzy模糊查询
fuzzy模糊查询,是一种误拼写时的fuzzy模糊搜索技术,用于搜索的时候可能输入的文本会出现误拼写的情况。
比如:输入”方财兄“,这时候也要匹配到“方才兄”。
示例:
GET /blogs_index/_search { "query": { "fuzzy" : { "author": { "value": "方财兄", "fuzziness": 1, "prefix_length": 1, "max_expansions": 100 } } } }
上面输入的是”方财兄“,实际模糊查询匹配,也会去匹配“方才兄”。
prefix模糊查询
这种只支持前缀查询,属于模糊查询的子集,叫前缀查询(prefix),返回包含指定前缀的所有文档。
比如要查找所有以 mikechen开头的,可以使用简单的 prefix 查询。
示例:
GET /user/_search { "query": { "prefix": { "name": "mikechen" } } }
mikechen睿哥
mikechen睿哥,十余年BAT架构经验,资深技术专家,就职于阿里、淘宝、百度等一线互联网大厂。
关注「mikechen」公众号,获取更多技术干货!
后台回复【面试】即可获取《史上最全阿里Java面试题总结》,后台回复【架构】,即可获取《阿里架构师进阶专题全部合集》