ElasticSearch 模糊查询

前缀搜索

# 前缀搜索
注意:
前缀搜索匹配的是trem,而不是filed,倒排索引的分词
性能比较差,没有缓存
搜索时尽量把前缀词设置长一点
GET /product/_search
{
  "query": {
    "prefix": {
      "name": {
        "value": "小米"
      }
    }
  }
}

通配符

 通配搜索匹配的是trem
GET /product/_search
{
  "query": {
    "wildcard": {
      "name": {
        "value": "耳*"
      }
    }
  }
}
tags.keyword 匹配的是数组里单个词
GET /product/_search
{
  "query": {
    "wildcard": {
      "tags.keyword": {
        "value": "*比"
      }
    }
  }
}

模糊查询

fuzzy 查询是不分词的
GET /product/_search
{
  "query": {
    "fuzzy": {
      "name":{
        "value": "耳耳机",
        "fuzziness": 1  # 允许字符的容错个数
      }
    }
  }
}

短语前缀查询

match_phrase_prefix 允许查询的最后一个分词做前缀匹配
max_expansions 可以限制匹配的最大此项,设置此值可以影响查询性能,同时也会影响查询结果
slop 分词可以移动的次数,分词移动后能匹配上都会出结果
GET /product/_search
{
  "query": {
    "match_phrase_prefix": {
      "name":{
        "query": "小米耳",
        "max_expansions": 10,
        "slop":2
      }
    }
  }
}

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