我在 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] 由于配置的节点均不可用,无法插入 Elasticsearch:[{#transport#-1}{127.0.0.1}{localhost/127.0. 0.1:9300}]。 NiFi 日志中可能提供更详细的信息:NoNodeAvailableException[配置的节点均不可用:[{#transport#-1}{127.0.0.1}{localhost/127.0.0.1:9300}]]
在我的研究中,我看到一些人看到了同样的错误,但他们都声称将端口更改为 :9300 可以解决他们的问题。正如您在下面的 PutElasticsearch 处理器配置选项卡图片中看到的那样,这不应该是这里的问题。
我真的很感激一些帮助,我很困惑。
最佳答案
PutElasticsearch 使用原生 Transport API,有效地让 NiFi 节点成为集群的一部分。因此,它对集群的版本与 Elasticsearch bundle 中包含的传输库的版本非常敏感。目前 PutElasticsearch 使用 2.1.0 版本的传输库,几乎可以肯定它与 5.6.2 集群不兼容。我应该提到的是,有一个 PutElasticsearch5 处理器使用 5.0.1 版本的库,但由于次要版本差异较大,它可能也不兼容 5.6.2 集群。
但是,有一组“Http”版本的 Elasticsearch 处理器(例如 PutElasticsearchHttp 和 PutElasticsearchHttpRecord )使用 REST API 与集群进行通信。由于 REST API 在 ES 版本中更加稳定,因此您通常可以使用它们来实现您的目标。代价是性能,由于与集群的额外通信开销,处理器的 Http 版本稍微慢一些。
关于ubuntu - Nifi 连接 Elasticsearch 时出现错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46630952/