ubuntu - Nifi 连接 Elasticsearch 时出现错误

标签 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 从 Twitter 提取数据然后抛出错误的图片

image description

抛出的异常如下: 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 处理器配置图片 image description

我真的很感激一些帮助,我很困惑。

最佳答案

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

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

关于ubuntu - Nifi 连接 Elasticsearch 时出现错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46630952/

相关文章:

Docker 构建依赖于主机 Ubuntu 版本而不是实际的 Docker 文件

ruby - 无法在 Linux 中构建 .NET Core 控制台应用程序

elasticsearch - Elasticsearch Range Query 和 Range Filter 的区别

python - Elasticsearch查询嵌套对象不返回结果

linux - 升级ICU和国际

linux - 如何在 Ubuntu 16.04.1 LTS 中允许文件和文件夹权限

php - Laravel 不适用于 Ubuntu 16.04 VPS

ubuntu - Laravel 5 中的调度程序在我的本地系统中使用 crontab 不工作

c++ - 在 ubuntu 14.04 上用 boost 编译 : undefined reference to `boost::thread::get_id() const'

elasticsearch - 在单个ElasticSearch查询中组合文本模式和大于数字的比较