我在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中提取数据然后抛出错误
抛出的异常如下:
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处理器配置选项卡的图片中看到的那样,这不应该是问题。
我真的很感激一些帮助,我很难过。
答案 0 :(得分:2)
PutElasticsearch使用本机传输API,有效地让NiFi节点成为群集的一部分。因此,它对集群版本与Elasticsearch捆绑包中包含的传输库版本非常敏感。目前,PutElasticsearch使用2.1.0版本的传输库,这几乎肯定与5.6.2集群不兼容。我应该提一下,有一个PutElasticsearch5处理器使用5.0.1版本的库,但由于次要版本的差异很大,这可能也与5.6.2集群不兼容。
但是,有一组Elasticsearch处理器的“Http”版本(例如PutElasticsearchHttp和PutElasticsearchHttpRecord),它们使用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下工作
需要记住的事情
希望这会有所帮助!