Я собираюсь использовать ElasticSearch в качестве поискового репозитория в своем приложении. У меня есть несколько вопросов относительно того, что лучше всего подходит для организации объектов в индексе поиска, когда объекты имеют ассоциации/отношения друг с другом.Как хранить объекты, имеющие отношения в ElasticSearch (поисковая система)
Из того, что я знаю, индексы поиска являются плоской структурой и не работают с концепцией отношений так же, как база данных.
Пусть у вас есть эти объекты домена:
Person: - имеет отношение один-ко-многим с Автомобиль
автомобиля: - принадлежит одному Person, много-к-одному с Лицо
Департамент: - Каждый отдела много Людей и каждый Person может принадлежать ко многие отдела, многие-ко-многим
Что бы лучшим способ сохранить это в поисковом индексе ? Каковы варианты? Например, я хочу найти всех людей, принадлежащих к определенному депарату, или всех людей, у которых автомобиль имеет более 300 л.с. Я использую API-интерфейс Java, если это имеет значение.
Я не эксперт (не менее 6 часов опыта с эластичным поиском), поэтому вы можете игнорировать меня. Вы можете взглянуть на использование отношения «родитель», чтобы обеспечить небольшую иерархию, чтобы помочь с некоторой базовой нормализацией. В равной степени, в зависимости от ваших требований, просмотр интерактивных документов в интерактивном режиме может быть вариантом (так как сколько автомобилей будет у одного человека?). Просто идеи, поэтому дайте нам знать, если какая-либо помощь. – Phil
Мне действительно удалось получить эту работу. То, что я сделал, это использовать вложенный тип. Он работает очень хорошо. – LuckyLuke
LuckyLuke один быстрый вопрос о вашем успехе, поэтому я могу узнать немного больше. Вы индексируете отдельные документы или используете API-интерфейс для массового индекса? Моя забота заключается в том, приводит ли вложенные документы в объемный индекс к дублированию документа Person в вашем случае. Если вы индексируете один за другим, тогда не беспокойтесь. – Phil