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"
      }
    }
  }
}

你可能感兴趣的:(elasticSearch,elasticsearch)