Ошибка при подключении Nifi к Elasticsearch

У меня установлены Nifi 1.4.0 и Elasticsearch 5.6.2 на экземпляре виртуальной машины Ubuntu 16.04.3 LTS.

Моя цель — использовать Nifi для извлечения некоторых данных из Twitter, сохранения их в Elasticsearch, и в конечном итоге я буду играть с данными в Kabana.

Проблема Все работает изолированно, то есть я могу добавлять данные в Elasticsearch непосредственно из командной строки и извлекать их. Я также могу получить доступ к Nifi, и я успешно извлекаю данные из твиттера и передаю их процессору PutElasticsearch.

Фотография, на которой Нифи извлекает данные из 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 описание изображения

Я был бы очень признателен за помощь, я в тупике.


person ob27    schedule 08.10.2017    source источник
comment
Я столкнулся с похожей проблемой. Я просмотрел журнал Elasticsearch и обнаружил следующее исключение: Получено сообщение от неподдерживаемой версии: [5.0.0] минимальная совместимая версия: [5.6.0]. Я бы выслушал ответы, чтобы решить.   -  person lordoku    schedule 15.03.2018


Ответы (3)


PutElasticsearch использует собственный транспортный API, который эффективно позволяет узлу NiFi стать частью кластера. Таким образом, он очень чувствителен к версии кластера и версии транспортной библиотеки, входящей в комплект Elasticsearch. В настоящее время PutElasticsearch использует транспортную библиотеку версии 2.1.0, которая почти наверняка несовместима с кластером 5.6.2. Я должен упомянуть, что существует процессор PutElasticsearch5, который использует версию библиотеки 5.0.1, но он, вероятно, также несовместим с кластером 5.6.2 из-за большой разницы в младшей версии.

Однако существует набор «Http»-версий процессоров Elasticsearch (например, PutElasticsearchHttp и PutElasticsearchHttpRecord), которые используют REST API для связи с кластером. Поскольку REST API гораздо более стабилен в разных версиях ES, вы обычно можете использовать их для достижения своей цели. Компромисс заключается в производительности, Http-версии процессора несколько медленнее из-за дополнительных накладных расходов на связь с кластером.

person mattyb    schedule 09.10.2017
comment
Свежая машина и выровненная версия, теперь дела текут прекрасно. Спасибо @mattyb - person ob27; 09.10.2017

Пожалуйста, используйте Nifi 1.4.0 и elasticsearch-5.6.5 и PutElasticsearch5 в качестве процессора. Меня устраивает.

person Hamid Reza Sharifi    schedule 14.12.2017

У меня была такая же проблема с PutElasticsearch и PutElasticseach5, поэтому я переключился на PutElasticsearchHttp. Это немного медленнее, но определенно работает — я тестировал ES версии 6.5.2 и 6.3.1, и поэтому он определенно должен работать для 5.6.2.

Пара вещей, о которых следует помнить:

  1. убедитесь, что вы используете порт HTTP - по умолчанию будет localhost: 9200
  2. если ваш поток json представляет собой одну строку, вы можете разделить ее перед передачей в PutElasticsearchHttp. иначе это даст вам ошибку синтаксического анализа. см. изображение ниже:

Разделение Json в NiFi

Надеюсь, это поможет!

person Renison Correya    schedule 30.01.2019