¿Cuáles son las principales diferencias arquitectónicas entre estas tecnologías?
Además, ¿qué casos de uso son generalmente más apropiados para cada uno?
¿Cuáles son las principales diferencias arquitectónicas entre estas tecnologías?
Además, ¿qué casos de uso son generalmente más apropiados para cada uno?
Respuestas:
Ahora que se ha corregido el alcance de la pregunta, también podría agregar algo a este respecto:
Hay muchas comparaciones entre Apache Solr y ElasticSearch disponibles, así que haré referencia a las que encontré más útiles, es decir, cubriendo los aspectos más importantes:
Bob Yoplait ya ha vinculado la respuesta de kimchy a ElasticSearch, Sphinx, Lucene, Solr, Xapian. ¿Cuál se adapta para qué uso? , que resume las razones por las que siguió adelante y creó ElasticSearch , que en su opinión proporciona un modelo distribuido muy superior y facilidad de uso en comparación con Solr.
La búsqueda en tiempo real de Ryan Sonnek : Solr vs Elasticsearch proporciona un análisis / comparación perspicaz y explica por qué cambió de Solr a ElasticSeach, a pesar de ser un usuario feliz de Solr, resume esto de la siguiente manera:
Solr puede ser el arma de elección al crear aplicaciones de búsqueda estándar , pero Elasticsearch lo lleva al siguiente nivel con una arquitectura para crear aplicaciones de búsqueda modernas en tiempo real . La percolación es una característica emocionante e innovadora que saca a Solr directamente del agua. Elasticsearch es escalable, rápido y un sueño para integrarse . Adios Solr, fue un placer conocerte. [énfasis mío]
El artículo de Wikipedia sobre ElasticSearch cita una comparación de la reputada revista alemana iX, que enumera las ventajas y desventajas, que prácticamente resumen lo que ya se ha dicho anteriormente:
Ventajas :
- ElasticSearch se distribuye. No se requiere proyecto por separado. Las réplicas también están en tiempo real, lo que se denomina "replicación push".
- ElasticSearch es totalmente compatible con la búsqueda casi en tiempo real de Apache Lucene.
- El manejo de multitenencia no es una configuración especial, donde con Solr es necesaria una configuración más avanzada.
- ElasticSearch presenta el concepto de Gateway, que facilita las copias de seguridad completas.
desventajas :
Solo un desarrollador principal[ya no es aplicable según la organización GitHub de Elasticsearch actual , además de tener una base de compromiso bastante activa en primer lugar]Sin función de autoarmado[ya no se aplica según la nueva API de calentamiento de índice ]
Son tecnologías completamente diferentes que abordan casos de uso completamente diferentes, por lo que no se pueden comparar de ninguna manera significativa:
Apache Solr : Apache Solr ofrece las capacidades de Lucene en un servidor de búsqueda rápido y fácil de usar con características adicionales como facetado, escalabilidad y mucho más.
Amazon ElastiCache : Amazon ElastiCache es un servicio web que facilita la implementación, el funcionamiento y el escalado de un caché en memoria en la nube.
[énfasis mío]
Tal vez esto se haya confundido con las siguientes dos tecnologías relacionadas de una forma u otra:
ElasticSearch : es un motor de búsqueda de código abierto (Apache 2), distribuido, RESTful, construido sobre Apache Lucene.
Amazon CloudSearch : Amazon CloudSearch es un servicio de búsqueda totalmente administrado en la nube que permite a los clientes integrar fácilmente la funcionalidad de búsqueda rápida y altamente escalable en sus aplicaciones.
Las ofertas de Solr y ElasticSearch suenan sorprendentemente similares a primera vista, y ambas usan el mismo motor de búsqueda de fondo, a saber, Apache Lucene .
Si bien Solr es más antiguo, bastante versátil y maduro, y ampliamente utilizado en consecuencia, ElasticSearch se ha desarrollado específicamente para abordar las deficiencias de Solr con los requisitos de escalabilidad en entornos de nube modernos, que son difíciles de abordar con Solr .
Como tal, probablemente sería más útil comparar ElasticSearch con el recientemente presentado Amazon CloudSearch (consulte la publicación introductoria Comience a buscar en una hora por menos de $ 100 / mes ), porque ambos afirman que cubren los mismos casos de uso en principio.
Veo que algunas de las respuestas anteriores están un poco desactualizadas. Desde mi perspectiva, y trabajo con Solr (Cloud y no Cloud) y ElasticSearch a diario, aquí hay algunas diferencias interesantes:
Para obtener una cobertura más completa del tema Solr vs. ElasticSearch, consulte https://sematext.com/blog/solr-vs-elasticsearch-part-1-overview/ . Esta es la primera publicación de la serie de publicaciones de Sematext que realiza una comparación directa y neutral de Solr vs. ElasticSearch. Divulgación: Yo trabajo en Sematext.
Veo que mucha gente aquí ha respondido a esta pregunta de ElasticSearch vs Solr en términos de características y funcionalidad, pero no veo mucha discusión aquí (ni en ninguna otra parte) sobre cómo se comparan en términos de rendimiento.
Por eso decidí realizar mi propia investigación . Tomé un microservicio de fuente de datos heterogéneos ya codificado que ya usaba Solr para la búsqueda de términos. Cambié Solr por ElasticSearch y luego ejecuté ambas versiones en AWS con una aplicación de prueba de carga ya codificada y capturé las métricas de rendimiento para su posterior análisis.
Aquí está lo que encontré. ElasticSearch tuvo un rendimiento 13% mayor en lo que respecta a la indexación de documentos, pero Solr fue diez veces más rápido. Cuando se trataba de consultar documentos, Solr tenía un rendimiento cinco veces mayor y era cinco veces más rápido que ElasticSearch.
Desde la larga historia de Apache Solr, creo que una de las fortalezas de Solr es su ecosistema . Hay muchos complementos de Solr para diferentes tipos de datos y propósitos.
Plataforma de búsqueda en las siguientes capas de abajo hacia arriba:
Artículo de referencia: búsqueda empresarial
He creado una tabla de diferencias importantes entre elasticsearch y Solr y splunk, puede usarla como actualización de 2016:
He estado trabajando en la búsqueda solr y elástica para aplicaciones .Net. La principal diferencia a la que me he enfrentado es
Búsqueda elástica:
Solr:
Si bien todos los enlaces anteriores tienen mérito y me han beneficiado enormemente en el pasado, como lingüista "expuesto" a varios motores de búsqueda de Lucene durante los últimos 15 años, debo decir que el desarrollo de búsqueda elástica es muy rápido en Python. Dicho esto, parte del código me pareció no intuitivo. Entonces, contacté a un componente de la pila ELK, Kibana, desde una perspectiva de código abierto, y descubrí que podía generar el código algo críptico de búsqueda elástica muy fácilmente en Kibana. Además, también podría extraer consultas de Chrome Sense es en Kibana. Si usa Kibana para evaluar es, acelerará aún más su evaluación. Lo que tardó horas en ejecutarse en otras plataformas estaba funcionando en JSON en Sense encima de elasticsearch (interfaz RESTful) en unos pocos minutos en el peor de los casos (conjuntos de datos más grandes); en segundos en el mejor de los casos. La documentación para Elasticsearch, aunque más de 700 páginas, no respondía las preguntas que tenía que normalmente se resolverían en SOLR u otra documentación de Lucene, que obviamente tomó más tiempo para analizar. Además, es posible que desee echar un vistazo a los agregados en la búsqueda elástica, que han llevado a Faceting a un nuevo nivel.
Panorama general: si está haciendo ciencia de datos, análisis de texto o lingüística computacional, Elasticsearch tiene algunos algoritmos de clasificación que parecen innovar bien en el área de recuperación de información. Si está utilizando algún algoritmo TF / IDF, Frecuencia de texto / Frecuencia de documento inversa, elasticsearch extiende este algoritmo de la década de 1960 a un nuevo nivel, incluso utilizando BM25, Best Match 25 y otros algoritmos de Clasificación de relevancia. Entonces, si está calificando o clasificando palabras, frases u oraciones, Elasticsearch realiza esta calificación sobre la marcha, sin la gran sobrecarga de otros enfoques de análisis de datos que toman horas, otro ahorro de tiempo de Elasticsearch. Con es, combinando algunos de los puntos fuertes de las agrupaciones con la puntuación y clasificación de relevancia de datos JSON en tiempo real, puede encontrar una combinación ganadora,
Nota: vi una discusión similar sobre las agregaciones anteriores, pero no sobre las agregaciones y la puntuación de relevancia: mi disculpa por cualquier superposición. Divulgación: no trabajo para Elastic y no podré beneficiarme en el futuro cercano de su excelente trabajo debido a un camino arquitectónico diferente, a menos que haga algún trabajo de caridad con Elasticsearch, lo que no sería una mala idea
Imagine el caso de uso:
La idea de tener una instancia de ES individual para cada índice es una gran sobrecarga en este caso.
Según mi experiencia, este tipo de caso de uso es muy complejo de soportar con Elasticsearch.
¿Por qué?
PRIMERO.
El principal problema es el incumplimiento fundamental de la compatibilidad con la espalda.
¡Los cambios de última hora son geniales! (Nota: imagine el servidor SQL que requiere que haga un pequeño cambio en todas sus declaraciones SQL, cuando se actualiza ... no puedo imaginarlo. Pero para ES es normal)
¡Los desaprobaciones que caerán en el próximo lanzamiento importante son muy sexys! (Nota: ya sabes, Java contiene algunas depreciaciones, que tienen más de 20 años, pero aún funcionan en la versión real de Java ...)
Y no solo eso, a veces incluso tienes algo que no está documentado en ninguna parte (personalmente lo encontré solo una vez, pero ...)
Entonces. Si desea actualizar ES (porque necesita nuevas funciones para alguna aplicación o desea solucionar errores), está en el infierno. Especialmente si se trata de una actualización importante de la versión.
La API del cliente no será compatible de nuevo. La configuración del índice no será compatible. Y actualizar todas las aplicaciones / servicios en el mismo momento con la actualización de ES no es realista.
Pero debes hacerlo de vez en cuando. Ninguna otra manera.
¿Los índices existentes se actualizan automáticamente? - Si. Pero no le ayuda cuando necesite cambiar algunas configuraciones de índice antiguo.
Para vivir con eso, necesita invertir constantemente una gran cantidad de energía en ... la compatibilidad de sus aplicaciones / servicios con futuras versiones de ES. O necesita construir (y de todos modos apoyar constantemente) algún tipo de middleware entre su aplicación / servicios y ES, que le proporciona una API de cliente compatible. (Y no puede usar Transport Client (porque requería la actualización de jar para cada actualización menor de ES), y este hecho no le facilita la vida)
¿Se ve simple y barato? No, no es. Lejos de ahi. El mantenimiento continuo de una infraestructura compleja basada en ES, es muy costosa en todos los sentidos posibles.
SEGUNDO. API simple? Bueno ... no realmente. Cuando realmente está utilizando condiciones y agregaciones complejas ... La solicitud JSON con 5 niveles anidados es lo que sea, pero no es simple.
Desafortunadamente, no tengo experiencia con SOLR, no puedo decir nada al respecto.
Pero Sphinxsearch es mucho mejor en este escenario, debido a SphinxQL totalmente compatible.
Nota: Sphinxsearch / Manticore son realmente interesantes. No está basado en Lucine y, como resultado, es muy diferente. Contiene varias características únicas de la caja que ES no tiene y loco rápido con índices de tamaño pequeño / mediano.
Si ya está usando SOLR, manténgase firme. Si está iniciando, busque Elastic search.
Se han solucionado los problemas principales máximos en SOLR y es bastante maduro.
He usado Elasticsearch durante 3 años y Solr durante aproximadamente un mes, siento que el clúster Elasticsearch es bastante fácil de instalar en comparación con la instalación de Solr. Elasticsearch tiene un grupo de documentos de ayuda con una gran explicación. Uno de los casos de uso estaba atrapado con la agregación de histogramas que estaba disponible en ES, sin embargo, no se encuentra en Solr.
Solo uso Elastic-search. Desde que encontré solr es muy difícil comenzar. Características de Elastic-search: