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

如何用query_string的‘basket’匹配含‘basketball’和‘basket’的结果?

解决方案

要通过最小修改实现用basket查询出name字段包含basketball和basket的结果,只需调整query_string中的query值为带通配符的形式,具体如下:

修改后的查询语句

{
    "query" : {
        "filtered": {
            "query": {
                "query_string": {
                    "query": "basket*",
                    "default_operator": "AND",
                    "analyze_wildcard": true
                }
                
            }
        }
    },
    "size" : 50,
    "from" : 0,
    "sort" : {}
}

原理说明

  • 你的查询中已经开启了analyze_wildcard: true,这意味着Elasticsearch会对包含通配符的查询字符串进行分析,同时保留通配符的匹配逻辑。
  • 使用basket*作为查询词,会匹配所有以basket开头的词汇:
    • 直接匹配原始值为basket的文档;
    • 匹配分词后包含basket前缀的词汇(比如basketball经过word_delimiter过滤器拆分后会得到basket和ball,也会被basket*匹配到)。
  • 仅修改query字段的值,其余配置保持不变,满足你“尽可能少做修改”的要求。

补充说明

如果你的filename分词器对basketball的处理是直接保留为完整词而非拆分,basket*依然能匹配到它,因为通配符会匹配该词的前缀部分。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 22:15:24