Мы сравнивали эти поисковые решения и начали задаваться вопросом, почему нужна схема, а другая нет. Что такое компромиссы? Это потому, что одно похоже на SQL, а другое похоже на NoSQL в смысле конфигурации схемы?Почему у SOLR есть схема, а ElasticSearch - нет?
ответ
У ES есть схема, обозначенная как templates и mappings. Вам не обязательно использовать его, но на практике вы это сделаете. Схема на самом деле хорошая вещь, и если вы заметите, что база данных, претендующая на чистую схему, будет иметь последствия для производительности.
Схема является компромиссом между легкостью разработки и принятия против производительности. Его легко читать/записывать в базу данных schemaless, но он будет менее результативным, особенно для любого нетривиального запроса.
У Elasticsearch определенно есть схема. Если вы считаете, что это не так, попробуйте индексировать дату в поле, а затем int в одно и то же поле. Или даже в разные типы с тем же именем (я думаю, ES 2.0 запрещает это сейчас).
Что делает Elasticsearch, упрощает автосоздание схемы. У этого есть компромиссы, такие как возможное неправильное обнаружение типа, поля, которые являются однозначными или многозначными в результате вывода на основе количества элементов, которые они содержат (они всегда многозначны под обложками) и т. Д. У Elasticsearch есть несколько способов обойти это, главным образом, путем определения некоторых элементов схемы и явного сопоставления схем, как писал Oleksii.
Solr также имеет режим схемы, который точно соответствует режиму Elasticsearch, вплоть до хранения всего JSON в качестве одного поля. И когда вы включите его, вы получите как аналогичные преимущества, так и аналогичные недостатки Elasticsearch. Кроме того, в Solr вы можете изменять такие вещи, как порядок стратегий автоматического отображения и сопоставление типов полей. В Elasticsearch (по крайней мере, 1.x) он был жестко закодирован. Вы можете видеть - слегка устаревшее - сравнение в my presentation from 2014.
Как сказал Сломо, они оба используют Луцену для хранения и большую часть поиска. Таким образом, основной подход двигателя не может измениться.
Есть еще одна вещь: я просматривал исходный код и для ES - он просто чист, с новыми технологиями, лучшей поддержкой кластеризации на AWS и других провайдерах облачных вычислений и т. Д. –
Ну, конечно, вы видят дилемму Новатора в действии. ES появилась позже и реализовала небольшое подмножество функций Solr, основанное на последней Lucene. Если вам нужны только то, что предлагает ES, пойдите для этого. Просто убедитесь, что вы читаете спецификации 2.0, поскольку вещи были сброшены. Что касается масштабирования, Solr - это то, что работает Apple CloudSearch и Bloomberg. –
- 1. Почему у dijit.form.Select есть метод setStore(), а dijit.form.FilteringSelect нет?
- 2. Почему у некоторых методов есть .prototype, а другие нет?
- 3. Есть ли у elasticsearch эквивалент «ядер», как в solr?
- 4. Почему у HashMap есть iter_mut(), но у HashSet нет?
- 5. Есть ли эквивалент Solr RequestHandler в Elasticsearch?
- 6. Почему у клиентов нет?
- 7. Есть ли у Apache-Solr таймаут, если Solr недоступен?
- 8. Почему у GLKView нет контекста?
- 9. Почему у datetime.time нет astimezone?
- 10. Почему у UDP нет флагов?
- 11. Почему у узла нет getElementByTagName()?
- 12. Почему у Ruby нет оператора! ==?
- 13. Почему у DecisionTreeClassifier нет prob_classify?
- 14. Почему у boost нет make_scoped()?
- 15. Почему у ActionScript нет «generics»?
- 16. POST новая схема для SOLR
- 17. Почему у меня нет изображений?
- 18. Почему у Scala нет указателя?
- 19. Heap памяти Solr и Elasticsearch
- 20. Git Flag Синтаксис: почему у некоторых флагов есть - один тире, а у некоторых есть - два?
- 21. Elasticsearch, solr concurrent commit
- 22. Почему у меня есть данные «Нет данных для строки/столбца», когда у меня есть данные?
- 23. Почему у Схемы есть список и цитата?
- 24. Почему у меня есть один scrollPanel, который работает, а другой - нет?
- 25. Почему у Python есть функция формата, а также метод форматирования
- 26. У NSInvocation есть saveArguments, почему нет аргументов release?
- 27. Почему у UIViewControllers есть xib-файлы и UIViews нет?
- 28. Почему у меня нет xlrd?
- 29. Почему у Rust нет союзов?
- 30. Почему у Symfony2 нет моделей?
Я просто хочу указать, что оба используют Lucene для индексирования документов. Не должно быть никакой разницы в том, как они хранятся. Вы получили свой ответ уже, но, возможно, эта информация помогает в сравнении. – Slomo