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

如何编写Elasticsearch单字段多精确值数组查询?

多值精确匹配Elasticsearch查询方案

因为你的data.name是text类型,直接匹配会触发分词逻辑,所以必须借助它的keyword子字段来实现精确匹配。针对你的需求,最简洁高效的方式是使用terms查询——它原生支持传入字符串数组,能直接匹配数组中任意一个值的文档。

基础查询示例

{
  "query": {
    "terms": {
      "data.name.keyword": ["Q4 Test WC Schüssel", "Q4_18 Bankerlampen", "MORE_SEARCHTERMS"]
    }
  }
}

补充说明

  • terms查询会返回所有data.name.keyword字段值与数组中任意元素完全相等的文档
  • 必须使用.keyword子字段:text类型的主字段会对原始字符串做分词处理,而keyword子字段完整保留了原始字符串,只有它能满足精确匹配的需求
  • 如果需要叠加其他过滤条件,建议把terms查询放到bool的filter子句中,这样既不会影响文档评分,还能利用缓存提升查询性能:
{
  "query": {
    "bool": {
      "filter": [
        {
          "terms": {
            "data.name.keyword": ["Q4 Test WC Schüssel", "Q4_18 Bankerlampen", "MORE_SEARCHTERMS"]
          }
        }
        // 可在此添加其他过滤条件
      ]
    }
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 18:10:31