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

Elasticsearch自定义字符过滤器失效,求提取JSON键的分析器方案

搞定Elasticsearch提取JSON键的自定义分析器问题

嘿,我看你想做一个能处理JSON字符串、提取键的自定义分析器,现在字符过滤器没生效对吧?问题出在映射语法的细节上,我来给你捋清楚怎么改:

先看修正后的完整配置

{
  "settings": {
    "analysis": {
      "analyzer": {
        "query_logging_analyzer": {
          "tokenizer": "whitespace",
          "char_filter": [
            "json_cleanup_filter"
          ]
        }
      },
      "char_filter": {
        "json_cleanup_filter": {
          "type": "mapping",
          "mappings": [
            "' => ",
            "{ => ",
            "} => ",
            ", => ",
            ": => ",
            "[ => ",
            "] => "
          ]
        }
      }
    }
  }
}

为什么原来的配置不行?

  • 你用了=>这种HTML转义后的写法,但Elasticsearch的mapping字符过滤器只认**原生的=>**作为映射分隔符,之前的写法会被当成普通字符,根本不会触发替换。
  • 另外\\u0020完全可以直接写成空格,既直观又不会出错。

修正后的效果

比如你输入:{"user":"john","tags":["admin","editor"]}
经过这个分析器处理后:

  1. 字符过滤器会把{、}、:、[、]、,全换成空格,得到:"user" "john" "tags" "admin" "editor"
  2. 再通过whitespace分词器拆分,就能得到"user"、"john"、"tags"这些token,轻松提取出JSON的键啦。

要是你还想去掉引号,直接在mappings里加一条" => 就行,这样连双引号也会被替换成空格,最终得到纯文本的键和值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:51:11