将Nifi连接到Elasticsearch时遇到错误

时间:2017-10-08 12:09:37

标签: ubuntu elasticsearch ubuntu-16.04 apache-nifi ubuntu-server

我在Ubuntu 16.04.3 LTS的VM实例上安装了Nifi 1.4.0和Elasticsearch 5.6.2。

我的目标是使用Nifi从Twitter中提取一些数据,将其存储在Elasticsearch中,最终我将使用Kabana中的数据。

问题一切都是孤立的,也就是说我可以直接从命令行向Elasticsearch添加数据并检索它。我也可以访问Nifi,我成功地从twitter中提取数据并将其传递给PutElasticsearch处理器。

Nifi的Pic从Twitter中提取数据然后抛出错误

image description

抛出的异常如下: PutElasticsearch[id=fbb5f3cf-015e-1000-8321-71b19eef4054] Failed to insert into Elasticsearch due to None of the configured nodes are available: [{#transport#-1}{127.0.0.1}{localhost/127.0.0.1:9300}]. More detailed information may be available in the NiFi logs.: NoNodeAvailableException[None of the configured nodes are available: [{#transport#-1}{127.0.0.1}{localhost/127.0.0.1:9300}]]

在我的研究中,我看到一些人看到同样的错误,但他们都声称将端口更改为:9300解决了他们的问题。正如您在下面的PutElasticsearch处理器配置选项卡的图片中看到的那样,这不应该是问题。

PutElasticsearch处理器配置的Pic image description

我真的很感激一些帮助,我很难过。

3 个答案:

答案 0 :(得分:2)

PutElasticsearch使用本机传输API,有效地让NiFi节点成为群集的一部分。因此,它对集群版本与Elasticsearch捆绑包中包含的传输库版本非常敏感。目前,PutElasticsearch使用2.1.0版本的传输库,这几乎肯定与5.6.2集群不兼容。我应该提一下,有一个PutElasticsearch5处理器使用5.0.1版本的库,但由于次要版本的差异很大,这可能也与5.6.2集群不兼容。

但是,有一组Elasticsearch处理器的“Http”版本(例如PutElasticsearchHttpPutElasticsearchHttpRecord),它们使用REST API与群集进行通信。由于REST API在ES版本中更加稳定,因此您通常可以使用它们来实现目标。权衡取决于性能,由于集群的额外通信开销,处理器的Http版本有些慢。

答案 1 :(得分:0)

请使用Nifi 1.4.0和elasticsearch-5.6.5以及 PutElasticsearch5 作为处理器。它对我有用。

答案 2 :(得分:0)

我在PutElasticsearch和PutElasticseach5上遇到了同样的问题,因此我改用PutElasticsearchHttp。这有点慢,但绝对可以-我已经用ES Ver 6.5.2和6.3.1进行了测试,因此绝对可以在5.6.2下工作

需要记住的事情

  1. 确保使用HTTP端口-默认为localhost:9200
  2. 如果您的json流是一行,则可能需要先将其拆分,然后再将其传递给PutElasticsearchHttp。否则会给您一个解析错误。参见下图:

Splitting Json in NiFi

希望这会有所帮助!