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

Elasticsearch如何在同一查询中实现multi_match与articlecode精确匹配

Elasticsearch 同时支持商品编码精确匹配与名称模糊查询的实现方案

该需求可直接通过调整查询语句实现,无需大幅修改原有索引配置,仅需要提前保证articlecode字段配置了keyword类型的子字段用于精确匹配。


前提配置参考

如果还未给articlecode配置多字段类型,可参考以下Mapping调整:

{
  "properties": {
    "articlecode": {
      "type": "text", // 保留用于编码的模糊匹配,不需要可删除
      "fields": {
        "keyword": {
          "type": "keyword",
          "ignore_above": 256
        }
      }
    },
    "name": {
      "type": "text",
      "analyzer": "ngram_analyzer" // 保留你原有配置的ngram分词器
    },
    "IdLang": {
      "type": "text",
      "fields": {
        "keyword": {
          "type": "keyword"
        }
      }
    }
  }
}

调整后的查询语句

{
  "size": 10,
  "query": {
    "bool": {
      "filter": {
        "term": {
          "IdLang.keyword": "sv"
        }
      },
      "should": [
        // 第一部分:编码精确匹配,命中后优先级最高
        {
          "term": {
            "articlecode.keyword": {
              "value": "v400", // 替换为实际搜索词
              "boost": 1000
            }
          }
        },
        // 第二部分:模糊匹配,仅无精确匹配结果时生效
        {
          "bool": {
            "must": [
              {
                "multi_match": {
                  "query": "v400", // 替换为实际搜索词
                  "fields": [
                    "articlecode^10",
                    "name^7"
                  ]
                }
              }
            ],
            "must_not": [
              {
                "term": {
                  "articlecode.keyword": "v400" // 替换为实际搜索词
                }
              }
            ]
          }
        }
      ],
      "minimum_should_match": 1
    }
  }
}

逻辑说明

  • 保留原有语言过滤规则,不影响搜索评分
  • should查询要求至少命中一个匹配块:
    • 精确匹配块命中时评分极高,会排在结果最前列
    • 模糊匹配块增加了must_not规则:只要搜索词和任意商品编码完全匹配,这部分的所有结果都会被过滤,实现搜索v400时仅返回精确匹配结果的需求
  • 若没有商品编码和搜索词完全匹配,精确匹配块无命中,模糊匹配块的must_not规则自动失效,返回所有名称、编码模糊匹配的结果,符合搜索400时返回两条结果的要求

内容的提问来源于stack exchange,提问作者F.Wigarde

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 01:09:03