Elasticsearch-前缀、通配符、正则、模糊搜索详解

1.对于前缀的匹配搜索:

GET /forum/article/_search
{
  "query": {
    "prefix": {
      "articleID": {
        "value": "J"
      }
    }
  }
}

prefix的匹配一般是处理不分词的场景,将会匹配articleID中以”J”开头的doc。prefix不会计算revelance score,只是作一个过滤的操作,和filter唯一的区别是filter会缓存结果,而prefix不会。前缀越短要处理的doc越多,性能越差。


2.对于通配符的搜索:

GET /forum/article/_search
{
  "query": {
    "wildcard": {
      "content": {
        "value": "*k"
      }
    }
  }
}

?会匹配任意字符,*会匹配0个或多个字符。性能根prefix一样差,必须要扫描整个倒排索引。


3.对于正则的搜索:

GET /forum/article/_search
{
  "query": {
    "regexp":{
      "content":"thi[n]."
    }
  }
}

[0-9]:指定范围内的数字
[a-z]:指定范围内的字幕
.:一个字符
+:前面的正则表达式可以出现一次或多次

正则的搜索同样会扫描全表,性能也会很差


4.对于模糊搜索:

GET /forum/article/_search
{
  "query": {
    "fuzzy": {
      "author_first_name": {
        "value": "tony",
        "fuzziness": 2
      }
    }
  }
}

fuzziness参数调整纠正的次数

通常不会直接用上述搜索,而会用下面的搜索:

GET /forum/article/_search
{
  "query": {
    "match": {
      "author_first_name": {
        "query": "tonyn",
        "fuzziness": "AUTO",
        "operator": "and"
      }
    }
  }
}
  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值