недавно я начал работать над реализацией ElasticSearch (ES) в унаследованном приложении электронной коммерции, написанном на PHP с использованием MySQL. Я совершенно новичок во всем этом, и чтение документов в порядке, но мне действительно нужен кто-то, кто мог бы мне посоветоваться.
Из документации ES я смог настроить новый кластер, и я также узнал, что река устарела и должна быть заменена, поэтому я заменил их коннектором Logstash и JDBC MySQL.
В этот момент у меня есть:
- ElasticSearch
- Logstash
- Драйвер JDBC MySQL
- Сервер MySQL
Структура базы данных приложения на самом деле не оптимальна и ее очень сложно заменить, но я бы хотел ее наилучшим образом скопировать в индекс ES.
Структура БД:
Продукция
+-------------------------------+-------+--------+
| Id | Title | Price |
+-------------------------------+-------+--------+
| 00c8234d71c4e94f725cd432ebc04 | Alpha | 589,00 |
| 018357657529fef056cf396626812 | Beta | 355,00 |
| 01a2c32ceeff0fc6b7dd4fc4302ab | Gamma | 0,00 |
+-------------------------------+-------+--------+
Flags
+------------+-------------+
| Id | Title |
+------------+-------------+
| sellout | Sellout |
| discount | Discount |
| topproduct | Top Product |
+------------+-------------+
flagsProducts (n: m pivot)
+------+-------------------------------+------------+------------+
| Id | ProductId | FlagId | ExternalId |
+------+-------------------------------+------------+------------+
| 1552 | 00c8234d71c4e94f725cd432ebc04 | sellout | NULL |
| 2845 | 00c8234d71c4e94f725cd432ebc04 | topproduct | NULL |
| 9689 | 018357657529fef056cf396626812 | discount | NULL |
| 4841 | 01a2c32ceeff0fc6b7dd4fc4302ab | discount | NULL |
+------+-------------------------------+------------+------------+
Эти идентификаторы строк являются полной катастрофой (но я должен иметь дело с ними сейчас). Сначала мне показалось, что я должен делать плоскую структуру индекса продуктов для ES, но как насчет множественных привязок объектов?