当前位置:   article > 正文

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

es prefix

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

GET /forum/article/_search
{
  "query": {
    "prefix": {
      "articleID": {
        "value": "J"
      }
    }
  }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

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


2.对于通配符的搜索:

GET /forum/article/_search
{
  "query": {
    "wildcard": {
      "content": {
        "value": "*k"
      }
    }
  }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

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


3.对于正则的搜索:

GET /forum/article/_search
{
  "query": {
    "regexp":{
      "content":"thi[n]."
    }
  }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

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

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


4.对于模糊搜索:

GET /forum/article/_search
{
  "query": {
    "fuzzy": {
      "author_first_name": {
        "value": "tony",
        "fuzziness": 2
      }
    }
  }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

fuzziness参数调整纠正的次数

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

GET /forum/article/_search
{
  "query": {
    "match": {
      "author_first_name": {
        "query": "tonyn",
        "fuzziness": "AUTO",
        "operator": "and"
      }
    }
  }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/正经夜光杯/article/detail/882633
推荐阅读
相关标签
  

闽ICP备14008679号