Подтвердить что ты не робот

Зачем использовать ElasticSearch с Mongo?

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

4b9b3361

Ответ 1

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

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

Ответ 2

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

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

изменить:

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

Ответ 3

Ответ Derick довольно много гвоздей. Вопросы, стоящие за всем этим:

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

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

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