Elasticsearch mapputs и связанные объекты
-
13-11-2019 - |
Вопрос
Извините потенциальному N00Bness этого вопроса - все еще пытаетесь заставить голову вокруг этого не реляционного материала NoSQL.
Я был супер впечатлен производительностью и простотой elasicsearchearch, но у меня есть сопоставление (пограничная несусная Тероя), чтобы ответить, прежде чем я слишком глубоко в реализации.
позволяет продолжать использовать примеры Twitter Elasticsearch Iearch в своей документации.
В основном мы знаем, что Tweet принадлежит пользователю, и у пользователя есть много твитов. Объекты выглядят что-то подобное:
user = {'screen_name':'d2kagw', 'id_str':'1234567890', 'favourites_count':'15', ...}
tweet = {'message':'lorem lipsum...', 'user_id_str':'1234567890', ...}
.
Что мне интересно, может ли объект Tweene ссылку на объект пользователя? Так как я хочу иметь возможность писать запросы, такие как:
{'query': {
'term':{'message':'lipsum'},
'range':{'user.favourites_count':{'from':10, 'to':30'}}
}}
.
Что я хотел бы вернуть твиты сопоставления с объектами пользователей в рамках ответа (по сравнению с ленивым нагрузкой позже).
Я прошу слишком многое из этого?
Если я должен будет ожидать, чтобы выбросить все пользовательские данные в Tweet Object, если я захочу запрашивать данные таким образом?
В моем внедрении (не использует Twitter, это был просто элегантный пример) Мне нужно иметь два набора данных как разные индексы из-за различных способов, которым я должен запрашивать данные, поэтому я не уверен, если я не уверен Можно использовать тип объекта и иметь структуру индекса, которым требуется структура индекса.
заранее спасибо за вашу помощь.
Решение
Elasticsearch Не на самом деле поддерживает таблицу, присоединившись, что мы так используются в мире SQL.Ближайший его попадает в него, является имеет дочерний запрос Это позволяет ограничивать результаты в одной таблице, основанной на произошествии записи в другой таблице, и даже здесь, она ограничена 1-го-многими (родительными детьми) отношениями.
Итак, общий подход в этом мире будет денормализовать все и запрашивать один индекс за раз.