Синхронизация данных из MSSQL в Elasticsearch с использованием Apache Kafka

В настоящее время я выполняю текстовый поиск в SQL Server, который становится узким местом, и я хотел бы переместить вещи в Elasticsearch по очевидным причинам, однако я знаю, что мне нужно денормализовать данные для лучшей производительности и масштабируемости.

В настоящее время мой текстовый поиск включает в себя некоторую агрегацию и объединение нескольких таблиц для получения окончательного результата. Таблицы, которые объединяются, не такие большие (до 20 ГБ на таблицу), но изменяются (вставляются, обновляются, удаляются) нерегулярно (две из них раз в неделю, другая по требованию x раз в день).

Мой план состоял бы в том, чтобы использовать Apache Kafka вместе с Kafka Connect, чтобы читать CDC с моего SQL Server, присоединять эти данные в Kafka и сохранять их в Elasticsearch, однако я не могу найти никакого материала, рассказывающего мне, как будут обрабатываться удаления во время обработки данных. сохранился в Elasticsearch.

Это даже поддерживается драйвером по умолчанию? Если нет, каковы возможности? Apache Spark, Logstash?

Ответ 1

Я не уверен, возможно ли это уже в Kafka Connect сейчас, но кажется, что это можно решить с помощью Nifi.

Надеюсь, я понимаю необходимость, вот документация по удалению записей Elasticsearch с одним из стандартных процессоров NiFi:

https://nifi.apache.org/docs/nifi-docs/components/org.apache.nifi/nifi-elasticsearch-5-nar/1.5.0/org.apache.nifi.processors.elasticsearch.DeleteElasticsearch5/