ElasticSearch Mappings & Related Objects - PullRequest
       16

ElasticSearch Mappings & Related Objects

2 голосов
/ 28 февраля 2012

Извините за потенциальность этого вопроса - все еще пытаюсь разобраться в этом нереляционном материале NoSQL.

Я был очень впечатлен производительностью и простотой ElasicSearch, но мне нужно ответить на вопрос о сопоставлении (пограничный NoSQL theroy), прежде чем я углублюсь в реализацию.

Давайте продолжим использовать примеры из Твиттера, которые ElasticSearch имеет в своей документации.

По сути, мы знаем, что твит принадлежит пользователю, и у пользователя много твитов. Объекты выглядят примерно так:

user  = {'screen_name':'d2kagw', 'id_str':'1234567890', 'favourites_count':'15', ...}
tweet = {'message':'lorem lipsum...', 'user_id_str':'1234567890', ...}

Интересно, может ли объект твит иметь ссылку на объект пользователя? Так как я хочу иметь возможность писать запросы вроде:

{'query': {
  'term':{'message':'lipsum'},
  'range':{'user.favourites_count':{'from':10, 'to':30'}}
}}

Который я хотел бы вернуть как твиты, соответствующие пользовательским объектам, как часть ответа (вместо того, чтобы загружать их позже).

Я слишком много об этом прошу?

Следует ли ожидать, что все пользовательские данные будут добавлены в объект твита, если я хочу запросить данные таким образом?

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

Заранее спасибо за помощь.

1 Ответ

2 голосов
/ 28 февраля 2012

ElasticSearch не поддерживает объединения таблиц, к которым мы так привыкли в мире SQL. Наиболее близким к нему является Имеет дочерний запрос , который позволяет ограничить результаты в одной таблице на основе присутствия записи в другой таблице, и даже здесь она ограничена отношением 1-ко-многим (родитель-дети) ,

Таким образом, общий подход в этом мире состоит в денормализации всего и запросе по одному индексу за раз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...