我怎样才能让NiFi接受一个数据库单列中的多值来填充Solr索引,这是一个数组?

iszxjhcz  于 2023-06-22  发布在  Solr
关注(0)|答案(1)|浏览(186)

我写这个问题好几个小时了……
我想我可能需要使用Jolt Transformer处理器。
示例数据库列中名为“A”的单个条目在varchar字段中包含此值。"Alabama","Ohio","Texas","Missouri"
同样,上述值是列“A”中的1个条目。
数据需要填充名为"STATES"的Solr索引字段。
目前,我有一个 ExecuteSQLRecord 拉取数据库数据,其中 JsonRecordSetWriter 用于 Record Writer。这个处理器连接到我的PutSolrContentStream。
问题似乎是,数据总是从A列 Package 在引号“和所有”已经在字段中得到转义。
如何覆盖此设置以手动设置要使用的报价?
按照现在的工作方式,发送到Solr的数据看起来像查询调用中的以下内容。

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

或其他尝试看看我能得到什么输出是像

"STATES": "Alabama,Ohio,Texas,Missouri"
"STATES": "'Alabama','Ohio','Texas','Missouri'"

我需要的是调用输出。

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

Jolt Transformer是否是解决方案

我在Jolt中看到的例子很简单,其中特定的值被更改,例如STATES变为"MY_STATES"。但是我现在不知道如何把

"STATES": "Alabama,Ohio,Texas,Missouri"

"STATES": ["Alabama","Ohio","Texas","Missouri"]
yx2lnoni

yx2lnoni1#

您可以在modify-overwrite-beta转换中使用***split***函数,例如

[
  {
    "operation": "modify-overwrite-beta",
    "spec": {
      "STATES": "=split(',',@(1,&))"  // & stands for the current level attribute
    }
  }
]

输入

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

您可以在切换ADVANCED选项卡(如下图所示)后,将SpecificationInput放入其框中进行测试:

相关问题