You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Elasticsearch:Wildcard关键词查询与N-gram+multi-match方案选型咨询

全文任意子串匹配方案咨询

背景信息

我有如下格式的字段:

  • orderId: ABC-DEF-1234
  • date: 2024-02-24
  • lastUpdatedTime: 2024-02-24T12:09:48.763-05:00

核心需求

用户在搜索框输入任意内容X,只要文档中指定的任意字段完全包含X,就返回该文档。比如输入DE、02-24、09:48都要命中上述示例文档。

生产环境约束

  • 记录数量:10万~50万条
  • 需要支持该功能的字段数量:约10个

拟定的两种方案

方案1:Keyword类型索引 + Wildcard Query

  • 索引阶段:将目标字段直接按keyword类型索引
  • 查询阶段:对每个字段使用*X*形式的wildcard query
  • 疑问:已知前缀加*会影响性能,在10万-50万条记录、10个字段的场景下,性能影响到底有多大?

方案2:Text类型+N-gram分词器 + Multi-match Query

  • 索引阶段:给所有目标字段配置N-gram分词器。我的理解是,当最小长度设为1时,N-gram会把ABC-DEF-1234拆分成所有相邻子串,比如A、AB、ABC、DEF-1、ABC-DEF-1234等
  • 查询阶段:直接用用户输入的内容对所有字段执行multi-match query
  • 疑问:这个方案会明显增加索引时间和存储成本,但如果查询性能比方案1提升明显,我可以接受。

咨询问题

目前我倾向方案2,想知道有没有更优或者更平衡性能与成本的方案,同时请指出我对两种方案的假设是否存在错误。

内容的提问来源于stack exchange,提问作者codeedoc

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 05:25:18