我在Ubuntu 16.04.3 LTS的VM实例上安装了Nifi 1.4.0和Elasticsearch 5.6.2。
我的目标是使用Nifi从Twitter提取一些数据,并将其存储在Elasticsearch中,最终我将在Kabana中处理这些数据。
问题一切都是独立进行的,也就是说,我可以直接从命令行将数据添加到Elasticsearch并检索它。我还可以访问Nifi,并且可以成功地从twitter提取数据并将其传递到PutElasticsearch处理器。
Nifi的图片从Twitter提取数据然后引发错误
引发的异常如下: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处理器配置的图片
我很感激一些帮助,我很沮丧。
最佳答案
PutElasticsearch使用本机Transport API,可以有效地使NiFi节点成为群集的一部分。这样,它对集群的版本与Elasticsearch bundle 包随附的传输库的版本非常敏感。当前,PutElasticsearch使用传输库的2.1.0版本,几乎可以肯定它与5.6.2集群不兼容。我应该提到,有一个PutElasticsearch5处理器使用该库的5.0.1版本,但是由于次要版本之间的巨大差异,该处理器也可能与5.6.2集群不兼容。
但是,存在一组使用REST API与集群通信的Elasticsearch处理器的“Http”版本(例如PutElasticsearchHttp和PutElasticsearchHttpRecord)。由于REST API在ES版本之间更加稳定,因此您通常可以使用它们来实现您的目标。权衡是在性能上,由于与群集的额外通信开销,处理器的Http版本要慢一些。
关于ubuntu - 将Nifi连接到Elasticsearch时出错,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46630952/