ElasticSearch模糊查询详解(3种模糊查询方式)

ElasticSearch模糊查询详解(3种模糊查询方式)-mikechen

ElasticSearch模糊查询有多种方式方式,比如:wildcard、fuzzy、prefix都可以实现ElasticSearch模糊查询。

wildcard模糊查询

wildcard模糊查询:包含通配符表达式字段的文档,类似于于mysql的like查询。

wildcard用法:

通配符 *:它匹配任何字符序列(包括空字符)

  1. GET /user/_search
  2. {
  3. "query": {
  4. "wildcard":{ "name":"mikechen*"}
  5. }
  6. }

上述语句可以检索到所有文档,等价于SQL中的:where name like “mikechen %”

上面语句的通配符 *,它匹配任何字符序列,包括空字符。

 

fuzzy模糊查询

fuzzy模糊查询,是一种误拼写时的fuzzy模糊搜索技术,用于搜索的时候可能输入的文本会出现误拼写的情况。

比如:输入”方财兄“,这时候也要匹配到“方才兄”。

示例:

  1. GET /blogs_index/_search
  2. {
  3. "query": {
  4. "fuzzy" : {
  5. "author": {
  6. "value": "方财兄",
  7. "fuzziness": 1,
  8. "prefix_length": 1,
  9. "max_expansions": 100
  10. }
  11. }
  12. }
  13. }

上面输入的是”方财兄“,实际模糊查询匹配,也会去匹配“方才兄”。

 

prefix模糊查询

这种只支持前缀查询,属于模糊查询的子集,叫前缀查询(prefix),返回包含指定前缀的所有文档。

比如要查找所有以 mikechen开头的,可以使用简单的 prefix 查询。

示例:

  1. GET /user/_search
  2. {
  3. "query": {
  4. "prefix": {
  5. "name": "mikechen"
  6. }
  7. }
  8. }

 

评论交流
    说说你的看法
欢迎您,新朋友,感谢参与互动!