Elasticsearch 实现模糊搜索

1、match query实现模糊搜索,该方式会对匹配文本进行分词然后匹配分词后的每个词项,匹配操作有OR和AND,默认为OR

{
  "query": {
    "match": {
      "text": {
        "query":     "hello world",
        "fuzziness": "AUTO",
        "operator":  "and"
      }
    }
  }
}

查询字符串首先进行分析,会产生词项 [hello,world] ,并且每个词项根据指定的 fuzziness 进行模糊化。如果match query所查询的字段为keyword类型则不会进行分词,等同term精确匹配查询。

2、match phase query实现模糊搜索,该方式不会对匹配文本进行分词,能够在text类型的字段上进行数据库like的匹配效果。

{
  "query": {
    "match_phrase": {
      "message": "this is a test"
    }
  }
}

3、fuzzy query实现模糊搜索,fuzzy 查询是一个词项级别的查询,所以它不做任何分析。它通过某个词项以及指定的 fuzziness 查找到词典中所有的词项。 fuzziness 默认设置为 AUTO 。

{
  "query": {
    "fuzzy": {
      "text": "surprize"
    }
  }
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容