Недавно я прочитал несколько статей о комбинации mongodb для хранения и elasticsearch для индексирования/поиска. Я чувствую, что я что-то пропускаю. Зачем вам идти этот маршрут, а не только using mongo to index данных? Какие преимущества дает elasticsearch, и стоит ли добавить дополнительную сложность?Зачем использовать ElasticSearch с Mongo?
ответ
ElasticSearch реализует гораздо больше функций, таких как пользовательское разделение текста на слова, пользовательское стеблирование, фасетный поиск и многое другое. Хотя MongoDB (довольно простой) текстовый поиск делает некоторые из этого, он не так сильно, как ElasticSearch.
Если все, что вы делаете, это поиск единственной строки в одном поле, тогда обычная система запросов MongoDB будет отлично работать для этого. Если вам нужно искать слова в нескольких полях, то текстовый поиск MongoDB будет работать. Если вам нужно что-то большее, ElasticSearch - это путь.
Ответ Дерика довольно много гвоздей. Все вопросы по этому поводу:
Какие функции вы хотите реализовать в своем приложении?
Если вы полагаетесь на большие возможности поиска в больших кусках текста, ElasticSearch, вероятно, хорошо использовать. Если вы хотите иметь гибкое хранилище данных, которое может справиться со сложными специальными запросами, Mongo может быть хорошо подходит. Если у вас разные требования к хранилищу данных, часто бывает полезно объединить два инструмента вместо реализации всех способов обхода, чтобы он работал только с одним хранилищем данных.
Выберите подходящий инструмент для работы.
Поисковая система и база данных делают некоторые принципиально разные вещи. Хорошая поисковая система (например, ElasticSearch) поддерживает гораздо более сложную и сложную индексацию, грани, выделение и т. Д. В случае с ElasticSearch вы также получаете свои ответы «в режиме реального времени». С другой стороны, поисковая система не возвращает каждый документ, соответствующий вашему запросу. Вместо этого он будет забивать документы в зависимости от того, насколько они соответствуют, и вернуть верхние очки. Когда вы запрашиваете базу данных, такую как MongoDB, вы должны ожидать, что она вернет все, что соответствует вашему запросу.
может хранить весь документ в ElasticSearch, но это обычно не оптимальное решение. Обычно вы настроите его на возврат идентификатора документа, который вы используете для извлечения документа из базы данных. MongoDB - это база данных, оптимизированная для хранения на основе документов. поэтому вы слышите о том, как люди используют их вместе.
редактировать:
Когда была опубликована, она соответствует рекомендациям, но это не может не быть.
- 1. ElasticSearch & Mongo
- 2. ElasticSearch с nodejs: зачем использовать модуль npm?
- 3. Зачем использовать mongo java драйвер версии 2.4 на mongo 2.6?
- 4. Синхронизация Elasticsearch с Mongo и возвращающиеся результаты
- 5. Зачем использовать Elasticsearch или Apache Solr вместе с Hibernate Search?
- 6. Удаление от Mongo to Elasticsearch
- 7. Elasticsearch mongo-connector KeyError _id
- 8. Подключение mongodb и elasticsearch с mongo-коннектором
- 9. elasticsearch mongo-connector, застрявший в «Вход в mongo-connector.log»
- 10. Зачем использовать несколько индексов ElasticSearch для одного веб-приложения?
- 11. elasticsearch - могу ли я использовать несколько «главных» узлов? Зачем?
- 12. Зачем использовать # 'с лямбдой?
- 13. Поле Mongo '_id' не добавляется в ElasticSearch
- 14. Как сделать пользовательское сопоставление с использованием соединителя mongo с elasticsearch
- 15. Как использовать Spring Data ElasticSearch с MongoDb
- 16. Elasticsearch Отображение потерянных на парусах лифта с mongo-коннектором
- 17. Зачем использовать $ или вместо $ и?
- 18. Зачем использовать «!!!»?
- 19. Как использовать Mongo $ pop?
- 20. Как использовать kibana с elasticSearch
- 21. Как использовать Redis с ElasticSearch
- 22. Как использовать поиск с Elasticsearch
- 23. Зачем использовать void с функцией?
- 24. Зачем использовать virtus с рельсами?
- 25. Зачем использовать async с QueueBackgroundWorkItem?
- 26. Зачем использовать Ember.js с Rails?
- 27. Зачем использовать .success() с getJSON?
- 28. Зачем использовать NGINX с Meteor?
- 29. С ARC зачем использовать @properties?
- 30. Зачем использовать npm с laravel?
Можете ли вы привести пример использования? Я не считаю оптимальным решение использовать оба nosql для достижения чего-то особенного? –