在 Elasticsearch (ES) 中,实现精确匹配、模糊匹配和前缀匹配,关键在于数据类型的设计(Mapping)以及查询语句(DSL)的选择。 以下是针对这三种场景的详细实现方案: --- 1. 精确匹配 (Exact Match) 精确匹配是指搜索的值必须与索引中的值完全一致(包括大小写,除非使用了正规化器)。 核心要点: 数据类型:字段类型必须是 ,或者数字类型(, 等)。如果是 类型,ES 会进行分词,导致无法精确匹配整个字符串。 查询语句:使用 或 查询。 实现方式: 场景:查找状态为 "published" 的文章,或者查找 ID 为 1001 的用户。 注意:如果你对 类型的字段做 查询,通常查不到结果,因为 字段存入倒排索引时已经被分词(如 "Apple" 变成了 "apple"),而 查询不会对搜索词进行分词。 --- 2. 模糊匹配 (Fuzzy Match) 模糊匹配主要用于处理拼写错误(Typos),基于编辑距离(Levenshtein distance)算法。 核心要点: 数据类型:通常用于 类型字段。 查询语句:使用 查询配合 参数,或直接使用 ...