Я использую ElasticSearch для поиска мощности в моем приложении.Дизайн моделирования ассоциации внутри типов в ElasticSearch
Одна из вещей, которую нам нужно сделать, - иметь способ хранения произвольных отношений между различными типами ElasticSearch.
Предположим, что у нас есть три вида в индексе ElasticSearch, такие как
"Клиенты", "Стиль жизни" и "MovieGenres".
Допустим, пользователь хочет связать несколько образ жизни для клиента, что происходит, является то, что пользователи задает отображение в приложении и в ElasticSearch принимает DocId от «клиента» , то DocId из «образа жизни» и помещает его в «Mapper» типа, который хранит пары DocId и хранит тип ассоциации в виде текста («cutomerToLifeStyle»).
Аналогичным образом связь между клиентом и moviegenre будет вставить пару docIds для клиента и moviegenre вместе с текстом типа ассоциации, такие как («customerToMovieGenre»). Идея заключается в консолидации любых типов произвольных отношений между типами в этом «Mapper».
Это может быть несколько упрощенным способом решения проблемы, но кто-нибудь видит что-то не так с этим подходом?
В итоге я создал тип Mapper. Кажется, мои «соединения» работают. Я думаю, что было бы лучше иметь сервис «присоединиться», поддерживаемый РСУБД (в дополнение к elasticsearch), чтобы заботиться о любых сложных требованиях объединения между различными объектами. Это увеличивает площадь поверхности приложения, но может быть более удобной в обслуживании в долгосрочной перспективе. –