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

如何在Elasticsearch中无需添加转义符\即可查询[]{}等特殊字符

Elasticsearch特殊字符免转义查询方案

核心结论

可以无需手动给[]、{}这类特殊字符追加\转义符完成查询,有两种成熟实现方案:


方案1:替换为无语法解析的查询类型

你当前使用的query_string属于语法敏感查询,会默认把{}、[]等字符识别为查询保留语法,所以默认要求转义。如果不需要用到query_string的复杂语法能力,直接替换为wildcard查询即可,这类查询不会对特殊字符做语法解析,无需转义:

{
  "track_total_hits": true,
  "query": {
    "bool": {
      "must": [
        {
          "wildcard": {
            "GECORRIGEERDETOEVOEGING.formatted": {
              "value": "*{uer}*"
            }
          }
        }
      ]
    }
  },
  "_source": [
    "GECORRIGEERDETOEVOEGING"
  ],
  "size": 30,
  "from": 0,
  "sort": [
    {
      "ORDERNUMMER.keyword": {
        "order": "asc"
      }
    }
  ]
}

方案2:保留query_string,开启自动转义参数

如果必须使用query_string的相关能力,只需新增escape: true参数,Elasticsearch会自动对查询内容中的所有保留特殊字符做转义处理,无需手动添加转义符:

{
  "track_total_hits": true,
  "query": {
    "bool": {
      "must": [
        {
          "query_string": {
            "default_field": "GECORRIGEERDETOEVOEGING.formatted",
            "query": "*{uer}*",
            "analyze_wildcard": "true",
            "default_operator": "AND",
            "escape": true
          }
        }
      ]
    }
  },
  "_source": [
    "GECORRIGEERDETOEVOEGING"
  ],
  "size": 30,
  "from": 0,
  "sort": [
    {
      "ORDERNUMMER.keyword": {
        "order": "asc"
      }
    }
  ]
}

注意事项

  • 若查询字段为text类型,需确保字段使用的分词器不会过滤{}、[]这类符号,否则会出现匹配失效问题
  • 通配符查询开头使用*会触发全字段扫描,数据量大时性能较低,高并发场景建议提前用ngarm分词做字段预处理优化查询效率

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 18:39:04