【问题标题】:Apache NiFi: PutElasticSearchHttp is not working, with blank errorApache NiFi:PutElasticSearchHttp 不起作用,出现空白错误
【发布时间】:2018-03-15 21:12:24
【问题描述】:

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

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

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

当我尝试用谷歌搜索此错误消息时,似乎一致认为是使用 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 中创建任何东西吗?我的配置正确吗?

【问题讨论】:

  • 你能不能把端口改成9300再试一次
  • @Shu 端口 9300 是传输层 API,9200 是 HTTP/REST 端口。当我更改它时,出现“由于异常导致路由失败:连接重置 java.net.SocketException:连接重置”

标签: elasticsearch apache-nifi


【解决方案1】:

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

SplitJson 的配置如下所示:

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 这并没有什么不同。我仍然遇到同样的错误。
    【解决方案3】:

    我有一个类似的流程,其中将类型更改为 _doc 在包含 splitTojSON 之后就成功了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-20
      • 1970-01-01
      • 1970-01-01
      • 2021-09-05
      相关资源
      最近更新 更多