Elasticsearch: индексирование твитов - отображение, шаблон или ETL

Я собираюсь проиндексировать твиты, пришедшие из Apache NiFi в Elasticsearch как POST, и хочу сделать следующее:

  1. Делать create_at поле как дата. Должен ли я использовать сопоставление или индексный шаблон для этого?

  2. сделать некоторые поля не проанализированными Как хэштеги, URL и т. Д.

  3. Хотите хранить не весь твит, а некоторые важные поля. Как и текст, не вся пользовательская информация, но некоторые поля, хэштеги, URL-адреса от сущностей (в почтовых URL-адресах). Не нужен цитируемый источник. И т.д. Что я должен использовать в этом случае? шаблон? Предварительно обработать твиты с помощью некоторого ETL-процесса, чтобы извлечь нужные мне данные и проиндексировать в ES?

Я немного смущен. Буду очень признателен за совет.

Заранее спасибо.

1 ответ

Решение

Я думаю, что в вашем NiFi у вас есть что-то вроде GetTwitter и PostHTTP. NiFi уже является своего рода ETL, поэтому вам, вероятно, не нужен другой. Однако, поскольку вы не хотите индексировать весь JSOn, исходящий из Twitter, вам явно нужен другой промежуточный процесс NiFi, чтобы выбрать то, что вы хотите, и преобразовать необработанный JSON в другой, более легкий. Вот пример того, как сделать это для Solr, но я не уверен, что такой же процессор существует для Elasticsearch.

В этой статье о потоковой передаче данных Twitter в Elasticsearch с использованием Logstash показан возможный шаблон индекса, который вы могли бы использовать для формирования своего собственного (т.е. добавить create_at поле данных, если хотите).

Если вы не хотите индексировать все, вы можете прийти к собственному отображению, которое затем можно использовать в шаблоне индекса. Используя шаблоны индексов, вы сможете создавать ежедневные / еженедельные / ежемесячные индексы Twitter по своему усмотрению.