2014-01-10 3 views
12

Недавно я прочитал несколько статей о комбинации mongodb для хранения и elasticsearch для индексирования/поиска. Я чувствую, что я что-то пропускаю. Зачем вам идти этот маршрут, а не только using mongo to index данных? Какие преимущества дает elasticsearch, и стоит ли добавить дополнительную сложность?Зачем использовать ElasticSearch с Mongo?

ответ

22

ElasticSearch реализует гораздо больше функций, таких как пользовательское разделение текста на слова, пользовательское стеблирование, фасетный поиск и многое другое. Хотя MongoDB (довольно простой) текстовый поиск делает некоторые из этого, он не так сильно, как ElasticSearch.

Если все, что вы делаете, это поиск единственной строки в одном поле, тогда обычная система запросов MongoDB будет отлично работать для этого. Если вам нужно искать слова в нескольких полях, то текстовый поиск MongoDB будет работать. Если вам нужно что-то большее, ElasticSearch - это путь.

3

Ответ Дерика довольно много гвоздей. Все вопросы по этому поводу:

Какие функции вы хотите реализовать в своем приложении?

Если вы полагаетесь на большие возможности поиска в больших кусках текста, ElasticSearch, вероятно, хорошо использовать. Если вы хотите иметь гибкое хранилище данных, которое может справиться со сложными специальными запросами, Mongo может быть хорошо подходит. Если у вас разные требования к хранилищу данных, часто бывает полезно объединить два инструмента вместо реализации всех способов обхода, чтобы он работал только с одним хранилищем данных.

Выберите подходящий инструмент для работы.

11

Поисковая система и база данных делают некоторые принципиально разные вещи. Хорошая поисковая система (например, ElasticSearch) поддерживает гораздо более сложную и сложную индексацию, грани, выделение и т. Д. В случае с ElasticSearch вы также получаете свои ответы «в режиме реального времени». С другой стороны, поисковая система не возвращает каждый документ, соответствующий вашему запросу. Вместо этого он будет забивать документы в зависимости от того, насколько они соответствуют, и вернуть верхние очки. Когда вы запрашиваете базу данных, такую ​​как MongoDB, вы должны ожидать, что она вернет все, что соответствует вашему запросу.

может хранить весь документ в ElasticSearch, но это обычно не оптимальное решение. Обычно вы настроите его на возврат идентификатора документа, который вы используете для извлечения документа из базы данных. MongoDB - это база данных, оптимизированная для хранения на основе документов. поэтому вы слышите о том, как люди используют их вместе.

редактировать:

Когда была опубликована, она соответствует рекомендациям, но это не может не быть.

+0

Можете ли вы привести пример использования? Я не считаю оптимальным решение использовать оба nosql для достижения чего-то особенного? –

Смежные вопросы