我是我的Nifi控制器,我想配置FreeFormTextRecordSetWriter
,但是我不知道应该在"Text"
字段中输入什么。我正在从源代码中获取文本(在我的情况下为GetSolr
),我只想写这段句号。
文档和邮件列表似乎没有告诉我如何完成此操作,对您有所帮助。
编辑:这是我想要实现的示例输入和输出(如您所见:不需要转换,纯文本,没有JSON输入)
编辑:我现在意识到,我不能告诉GetSolr仅返回CSV数据-但我必须使用Json 因此,使用属性引用似乎很好。文档遗漏的是$ {flowFile}属性应包含返回的完整流文件。
样本输入:
{
"responseHeader": {
"zkConnected": true,
"status": 0,
"QTime": 0,
"params": {
"q": "*:*",
"_": "1553686715465"
}
},
"response": {
"numFound": 3194,
"start": 0,
"docs": [
{
"id": "{402EBE69-0000-CD1D-8FFF-D07756271B4E}",
"MimeType": "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
"FileName": "Test.docx",
"DateLastModified": "2019-03-27T08:05:00.103Z",
"_version_": 1629145864291221504,
"LAST_UPDATE": "2019-03-27T08:16:08.451Z"
}
]
}
}
想要的输出
{402EBE69-0000-CD1D-8FFF-D07756271B4E}
顺便说一句:文档中说:
写入结果时要使用的文本。此属性将使用记录中可用的任何字段来评估表达式语言。 支持表达式语言:true(将使用流文件属性和变量注册表进行评估)
我想使用来源的文字,所以很困惑
答案 0 :(得分:2)
您需要使用表达式语言,就像记录的字段是FlowFile的属性一样。 示例:
输入:
{
"t1": "test",
"t2": "ttt",
"hello": true,
"testN": 1
}
Text
中的 FreeFormTextRecordSetWriter
属性:
${t1} k!${t2} ${hello}:boolean
${testN}Num
输出(使用ConvertRecord
):
test k!ttt true:boolean
1Num
编辑:
似乎您需要的是从Solr读取并编写一列csv。您需要使用CSVRecordSetWriter
。至于一样
我应该告诉您考虑升级到1.9.1。从1.9.0开始,可以为您推断模式。
否则,您可以将Schema Access Strategy
设置为Use 'Schema Text' Property
然后,在“架构文本”中使用以下架构
{
"name": "MyClass",
"type": "record",
"namespace": "com.acme.avro",
"fields": [
{
"name": "id",
"type": "int"
}
]
}
这应该有效 我将其编辑为答案。如果它适合您,请选择我的答案:)