Apache NiFi:PutElasticSearchHttp 无法正常工作,出现空白错误

问题描述 投票:0回答:4

我目前在同一台计算机上运行 Elasticsearch 版本 6.2.2 和 Apache Nifi 版本 1.5.0。我正在尝试遵循位于的Nifi示例:https://community.hortonworks.com/articles/52856/stream-data-into-hive-like-a-king-using-nifi.html除了而不是存储到 Hive,我想存储到 Elasticsearch。

最初我尝试使用 PutElasticsearch5 处理器,但在 Elasticsearch 上遇到以下错误:

Received message from unsupported version: [5.0.0] minimal compatible version is: [5.6.0]

当我尝试用 Google 搜索此错误消息时,似乎一致认为使用 PutElasticsearchHttp 处理器。我的 Nifi 看起来像:

以及 PutElasticsearchHttp 处理器的配置:

当流文件到达 PutElasticsearchHttp 处理器时,会显示以下错误:

PutElasticSearchHttp failed to insert StandardFlowFileRecord into Elasticsearch due to , transferring to failure. 

原因似乎是空白/空。 Elasticsearch 日志中也没有任何内容。

在 ConvertAvroToJson 之后,数据是一个 JSON 数组,所有条目都在一行上。这是一个示例值:

{"City": "Athens", 
 "Edition": 1896, 
 "Sport": "Aquatics", 
 "sub_sport": "Swimming",
 "Athlete": "HAJOS, Alfred", 
 "country": "HUN", 
 "Gender": "Men", 
 "Event": "100m freestyle", 
 "Event_gender": "M", 
 "Medal": "Gold"}

关于如何调试/解决这个问题有什么想法吗?我需要先在 Elasticsearch 中创建任何内容吗?我的配置正确吗?

elasticsearch apache-nifi
4个回答
5
投票

我能够弄清楚。在 ConvertAvroToJSON 之后,流文件是包含 JSON 索引的 JSON 数组的一行。由于我想存储各个索引,因此我需要一个 SplitJSON 处理器。现在我的 Nifi 看起来像这样:

SplitJson 的配置如下所示:


0
投票

索引名称中不能包含“/”字符。尝试使用有效的索引名称:例如运动。


0
投票

我有一个类似的流程,其中将类型更改为

_doc
在包含
splitTojSON
后就成功了。


0
投票

我对处理器 PutElasticsearchHttp 也有疑问。

我已经在这里描述了这个问题。也许有这方面经验的人可以看一下:)。

Apache NIFI - PutElasticsearchHttp - 错误 400

© www.soinside.com 2019 - 2024. All rights reserved.