Elasticsearch 的模糊查询相关概念

1. 前缀搜索(prefix)

小白理解

就是查"以某个词开头"的内容,比如你搜"app",能搜到"apple"、"application"等。

  • 只看词(term)是不是以你给的前缀开头,不管是不是完整的字段。
  • 性能不太好,速度慢,最好前缀长一点。
  • 没有缓存,查询多了也不会变快。

2. 通配符(wildcard)

小白理解

就是查"带有某种模式"的内容,比如"a*e"能搜到"apple"、"ace"等。

  • * 代表任意多个字符,? 代表一个字符。
  • 也是对词(term)做匹配,不是对整个字段。

3. 正则(regexp)

小白理解

就是用正则表达式查内容,比如"a.*e"能搜到"apple"、"ace"、"abcde"等。

  • 正则表达式可以很灵活,但复杂的正则会很慢。
  • 有些特殊功能(如区间、否定、交集等)可以通过 flags 开启。

4. 模糊查询(fuzzy)

小白理解

就是查"拼写差不多"的内容,比如你输错了"applr",也能搜到"apple"。

  • 能容忍拼写错误、缺字、多字、顺序颠倒等。
  • 可以设置"模糊度",越大越宽松,但结果可能不准。

5. 短语前缀(match_phrase_prefix)

小白理解

就是查"以某个短语开头"的内容,比如"this is ma"能搜到"this is man"、"this is magic"。

  • 会先分词,然后最后一个词用前缀匹配。
  • 适合输入一半的短语时做自动补全。

6. N-gram 和 edge ngram

小白理解

这是一种把词拆成很多小片段(子串)的技术,方便做模糊和前缀搜索。

  • ngram :从每个字符都开始拆,比如"abc"会拆成"a"、"ab"、"abc"、"b"、"bc"、"c"。
    • 适合"中间模糊"检索,比如"abc"能搜到"b"。
  • edge_ngram :只从第一个字符开始拆,比如"abc"会拆成"a"、"ab"、"abc"。
    • 适合"前缀"检索,比如"abc"能搜到"a"、"ab"。

总结表

查询类型 适用场景 小白理解举例
prefix 前缀匹配 "app"搜"apple"
wildcard 模糊匹配 "a*e"搜"apple"
regexp 正则灵活匹配 "a.*e"搜"apple"
fuzzy 拼写错误容忍 "applr"搜"apple"
match_phrase_prefix 短语前缀补全 "this is ma"搜"this is man"
ngram 任意位置模糊 "b"搜"abc"
edge_ngram 前缀模糊 "ab"搜"abc"

相关推荐
帅大大的架构之路1 小时前
测试单节点elasticsearch配置存储压缩后的比率
大数据·elasticsearch·搜索引擎
萌吖LOVETurtle~11 小时前
阿里云部署微调chatglm3
elasticsearch·阿里云·云计算
Elastic 中国社区官方博客11 小时前
Elastic 9.1/8.19:默认启用 BBQ,ES|QL 支持跨集群搜索(CCS)正式版,JOINS 正式版,集成 Azure AI Foundry
大数据·elasticsearch·搜索引擎·全文检索·azure·elastic
找不到、了14 小时前
Mysql使用Canal服务同步数据->ElasticSearch
数据库·mysql·elasticsearch
Adorable老犀牛14 小时前
Exporters | 安装elasticsearch_exporter
elasticsearch·prometheus·exporter
干了这杯柠檬多17 小时前
使用maven-shade-plugin解决es跨版本冲突
java·elasticsearch·maven
尚学教辅学习资料1 天前
SpringBoot3.x入门到精通系列:3.3 整合 Elasticsearch 详解
大数据·elasticsearch·jenkins
Hello.Reader2 天前
Elasticsearch 混合检索一句 `retriever.rrf`,把语义召回与关键词召回融合到极致
大数据·elasticsearch·搜索引擎
Freed&2 天前
倒排索引:Elasticsearch 搜索背后的底层原理
大数据·elasticsearch·搜索引擎·lucene
bemyrunningdog2 天前
IntelliJIDEA上传GitHub全攻略
大数据·elasticsearch·搜索引擎