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

如何用NiFi将数据库单列多值转为Solr数组类型索引字段

用Jolt Transformer将字符串转成Solr所需的数组格式

Jolt完全能搞定你这个需求,针对你遇到的几种输入格式,分别给你对应的转换规则:

情况1:输入是带转义双引号的字符串

比如你的原始输出是:

[
 {
  "STATES": "\"Alabama\",\"Ohio\",\"Texas\",\"Missouri\""
 }
]

用下面的Jolt规格:

[
  {
    "operation": "modify-overwrite-beta",
    "spec": {
      "*": {
        "STATES": "=split(',', @(1,STATES))",
        "STATES": ["=replaceAll(@(1,STATES), '^\"|\"$', '')", "*"]
      }
    }
  }
]

逻辑:先按逗号把字符串分割成数组,再遍历数组里的每个元素,去掉首尾的双引号。

情况2:输入是纯逗号分隔的字符串

如果你的输出是这种格式:

[
 {
  "STATES": "Alabama,Ohio,Texas,Missouri"
 }
]

用更简单的规则:

[
  {
    "operation": "modify-overwrite-beta",
    "spec": {
      "*": {
        "STATES": "=split(',', @(1,STATES))"
      }
    }
  }
]

逻辑:直接按逗号分割字符串成数组即可。

情况3:输入是带单引号的字符串

如果输出是这种格式:

[
 {
  "STATES": "'Alabama','Ohio','Texas','Missouri'"
 }
]

用这个规则:

[
  {
    "operation": "modify-overwrite-beta",
    "spec": {
      "*": {
        "STATES": "=split(',', @(1,STATES))",
        "STATES": ["=replaceAll(@(1,STATES), \"^'|'$\", '')", "*"]
      }
    }
  }
]

逻辑:先分割成数组,再去掉每个元素首尾的单引号。

NiFi使用步骤

把Jolt Transformer处理器放在JsonRecordSetWriter之后、PutSolrContentStream之前,操作类型选「Chain」,把上面对应的规格粘贴进去即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 22:52:19