Можно ли объединить для создания документа C из документов A и B с ElasticSearch - PullRequest
1 голос
/ 23 марта 2019

Моя проблема заключается в том, что мне нужно выполнить сортировку по данным, поступающим из двух разных источников данных: базы данных MySQL, содержащей информацию о некоторых продуктах, и PostgreSQL, содержащей некоторые показатели, связанные с этими продуктами.

Поскольку данныенаходится в двух разных источниках данных, которые я не могу из коробки придумать с одним запросом-исполнителем, который бы упорядочивал (разбивал на страницы) на уровне базы данных.Мне нужно сделать два разных запроса, а затем вручную объединить данные и выполнить сортировку и разбиение на страницы кода.Я хотел бы, насколько это возможно, избежать создания собственной системы разбивки на страницы и ручного слияния данных, и как можно больше делегировать эту работу в базовую базу данных.

Именно здесь я подумал о такой системе, как ElasticSearch.(или Solr, но ES, кажется, проще в использовании) может помочь.

1) Предоставляет ли ES инструменты или механизм для объединения 2 источников данных в 1 документ?Или эта работа должна выполняться сторонним инструментом, который будет периодически извлекать данные из обоих источников данных и создавать / обновлять документы?

2) Я правильно предположил, что наличие двух индексов (или двух разных)Тип документа) в моем случае не имеет смысла, поскольку ES не может выполнять запросы на соединение?

3) Помимо создания одного документа, какое еще решение у меня есть, с которым ES может помочь?Возможно ли «как-то», что при наличии данных datasource1 в index1 и данных datasource2 в index2 я могу одновременно выполнять несколько поисковых запросов, используя оба индекса (поскольку объединение не идет).

1 Ответ

0 голосов
/ 23 марта 2019

Предоставляет ли ES инструменты или механизм для объединения 2 источников данных в 1 документ?Или эту работу должен выполнять сторонний инструмент, который будет периодически извлекать данные из обоих источников данных и создавать / обновлять документы?

Для этого есть два подхода:

  1. Процесс ETL (Извлечение, Преобразование, Загрузка) для загрузки данных из обоих источников в один документ.В мире Elastic вы можете использовать logstash для выполнения этой
  2. Виртуализация данных должен делать это без необходимости копировать данные

3) Помимо создания одного документа, какое еще решение у меня есть, с которым может помочь ES?Возможно ли «как-то», что при наличии данных datasource1 в index1 и данных datasource2 в index2 я могу одновременно выполнять несколько поисковых запросов, используя оба индекса (поскольку объединение не идет).

Очень просто выполнить один запрос по нескольким индексам. Ответы здесь

...