Este artículo es un artículo espejo de traducción automática, por favor haga clic aquí para saltar al artículo original.

Vista: 7839|Respuesta: 0

Selección de motores de búsqueda: Elasticsearch vs Solr

[Copiar enlace]
Publicado en 11/12/2018 13:42:36 | | | |
Documento de investigación sobre selección de motores de búsqueda

Introducción a Elasticsearch*


Elasticsearch es un motor de búsqueda y análisis distribuido en tiempo real. Te ayuda a procesar datos a gran escala más rápido que nunca.

Se puede usar para búsqueda de texto completo, búsqueda estructurada y analítica, y por supuesto, puedes combinar las tres.

Elasticsearch es un motor de búsqueda construido sobre el motor de búsqueda de texto completo Apache Lucene™, que puede considerarse el framework de motor de búsqueda de código abierto más avanzado y eficiente disponible hoy en día.

Pero Lucene es solo un framework, y para aprovechar al máximo sus funcionalidades, necesitas usar JAVA e integrar Lucene en tu programa. Hace falta mucho aprendizaje para entender cómo funciona, y Lucene es realmente complicado.

Elasticsearch utiliza Lucene como su motor interno, pero al usarlo para búsqueda en texto completo, solo necesitas usar una API unificada sin entender los complejos principios operativos de Lucene que hay detrás.

Por supuesto, Elasticsearch no es tan simple como Lucene, no solo incluye funciones de búsqueda en texto completo, sino que también puede realizar las siguientes tareas:

  • Almacenamiento de archivos distribuido en tiempo real e indexación de cada campo para que pueda ser buscado.
  • Motor de búsqueda distribuido con análisis en tiempo real.
  • Puede escalar a cientos de servidores para gestionar petabytes de datos estructurados o no estructurados.

Con tantas funciones integradas en un solo servidor, puedes comunicarte fácilmente con la API RESTful de ES a través del cliente o cualquiera de tus lenguajes de programación preferidos.

Empezar con Elasticsearch es muy sencillo. Viene con muchos valores predeterminados muy razonables, lo que lo convierte en una buena forma para que los principiantes eviten tener que lidiar con teorías complejas nada más empezar.

Está instalado y listo para usar, y puede ser muy productivo con un pequeño coste de aprendizaje.

A medida que aprendas más, también puedes aprovechar funciones más avanzadas de Elasticsearch, y todo el motor puede configurarse de forma flexible. Puedes personalizar tu propio Elasticsearch según tus necesidades.

Casos de uso:

  • Wikipedia utiliza Elasticsearch para realizar búsquedas en texto completo y resaltar palabras clave, así como sugerencias de búsqueda como buscar-tal mientras escribes y ¿quisiste decir?
  • The Guardian utiliza Elasticsearch para procesar los registros de visitantes y así informar a los editores de las reacciones del público a diferentes artículos en tiempo real.
  • StackOverflow combina búsqueda en texto completo con geolocalización e información relevante para ofrecer una representación de preguntas relacionadas con más similares a este.
  • GitHub utiliza Elasticsearch para recuperar más de 130 mil millones de líneas de código.
  • Cada día, Goldman Sachs lo utiliza para indexar 5TB de datos, y muchos bancos de inversión lo emplean para analizar los movimientos del mercado bursátil.

Pero Elasticsearch no es solo para grandes empresas, también ha ayudado a muchas startups como DataDog y Klout a ampliar sus capacidades.

Pros y contras de Elasticsearch**:

mérito

  • Elasticsearch está distribuido. No se requieren otros componentes y la distribución es en tiempo real, conocida como "replicación Push".
  • Elasticsearch soporta completamente la búsqueda casi en tiempo real con Apache Lucene.
  • Gestionar la multitenencia no requiere una configuración especial, mientras que Solr requiere ajustes más avanzados.
  • Elasticsearch utiliza el concepto de Gateway para facilitar la copia de seguridad.
  • Cada nodo forma una estructura de red igual y, cuando algunos nodos fallan, otros nodos se asignan automáticamente para trabajar en su lugar.


defecto

  • Solo un desarrollador (la actual organización Elasticsearch en GitHub es más que eso, ya tiene mantenedores bastante activos)
  • No es lo suficientemente automático (no es adecuado para la actual nueva API de Index Warmup)


Acerca de Solr*

Solr (pronunciado "solar") es una plataforma de búsqueda empresarial de código abierto para el proyecto Apache Lucene. Sus principales características incluyen búsqueda en texto completo, marcado de impacto, búsqueda facetada, agrupamiento dinámico, integración de bases de datos y procesamiento de texto enriquecido (por ejemplo, Word, PDF). Solr es altamente escalable y proporciona búsqueda distribuida y replicación de índices. Solr es el motor de búsqueda empresarial más popular, y Solr4 también añade soporte para NoSQL.

Solr es un servidor de búsqueda independiente y de texto completo escrito en Java que funciona en un contenedor servlet como Apache, Tomcat o Jetty. Solr utiliza la biblioteca de búsqueda de Java Lucene como base para la indexación y búsqueda de texto completo, y cuenta con APIs HTTP/XML y JSON similares a REST. Las potentes capacidades de configuración externa de Solr facilitan la adaptación a muchos tipos de aplicaciones sin necesidad de codificación Java. Solr tiene una arquitectura de plugins para soportar personalizaciones más avanzadas.

Debido a la fusión de los proyectos Apache Lucene y Apache Solr en 2010, ambos proyectos fueron creados e implementados por el mismo equipo de desarrollo de la Apache Software Foundation. En cuanto a tecnología o productos, Lucene/Solr o Solr/Lucene es igual.

Pros y contras de Solr:

mérito

  • Solr cuenta con una comunidad más grande y madura de usuarios, desarrolladores y colaboradores.
  • Soporta añadir índices en múltiples formatos, como HTML, PDF, formatos de software Microsoft Office y formatos de texto plano como JSON, XML, CSV, etc.
  • Solr es relativamente maduro y estable.
  • No se considera la búsqueda mientras indexa, y la velocidad es mayor.


defecto

  • Cuando se establece el índice, la eficiencia en la búsqueda disminuye y la eficiencia en la búsqueda en el índice en tiempo real no es alta.


Elasticsearch vs Solr*

Solr es más rápido simplemente buscando datos existentes.




Al indexar en tiempo real, Solr provoca bloqueo de IO y un bajo rendimiento de consultas, lo cual Elasticsearch tiene una clara ventaja.



A medida que aumenta la cantidad de datos, la eficiencia de búsqueda de Solr disminuye, mientras que Elasticsearch no cambia significativamente.



En resumen, la arquitectura de Solr no es adecuada para aplicaciones de búsqueda en tiempo real.

Pruebas de producción en el mundo real*

La figura siguiente muestra un aumento de 50 veces en la velocidad media de consulta tras cambiar de Solr a Elasticsearch.




Resumen de la comparación entre Elasticsearch y Solr

  • Ambos son fáciles de instalar;
  • Solr aprovecha Zookeeper para la gestión distribuida, mientras que Elasticsearch tiene gestión de orquestación distribuida;
  • Solr soporta más formatos de datos, mientras que Elasticsearch solo admite formatos de archivo JSON;
  • Solr ofrece oficialmente más funcionalidades, mientras que Elasticsearch se centra más en funciones principales, y las funciones avanzadas son mayormente proporcionadas por plugins de terceros.
  • Solr supera a Elasticsearch en aplicaciones de búsqueda tradicionales, pero es significativamente menos eficiente que Elasticsearch al manejar aplicaciones de búsqueda en tiempo real.
  • Solr es una solución potente para aplicaciones de búsqueda tradicionales, pero Elasticsearch es más adecuado para aplicaciones emergentes de búsqueda en tiempo real.


Otras soluciones de motores de búsqueda de código abierto basadas en Lucene*


1: Usar Lucene directamente

Nota: Lucene es una biblioteca de búsqueda JAVA que no es una solución completa por sí sola y requiere un esfuerzo adicional de desarrollo.

Ventajas: Solución madura con muchos casos exitosos. Proyectos de primer nivel de Apache que continúan avanzando rápidamente. Gran y activa comunidad de desarrollo, un gran número de promotores. Es simplemente una biblioteca de clases, con suficiente espacio para personalización y optimización: tras una personalización sencilla, puede satisfacer la mayoría de las necesidades comunes; Optimizado para soportar mil millones + de búsquedas.

Contras: Requiere un esfuerzo adicional de desarrollo. Todo escalado, distribución, fiabilidad, etc., debe ser implementado por ti mismo; En no tiempo real, hay un retraso entre la indexación y la búsqueda, y la escalabilidad del esquema actual de búsqueda "Lucene Near Real Time search" necesita mejorarse aún más

El inicio de sesión del hipervínculo es visible.

2:Katta

Nota: Esquema de búsqueda distribuido, escalable, tolerante a fallos y casi en tiempo real basado en Lucene.

Pros: Distribuido de fábrica con Hadoop. Tiene un mecanismo de escalado y tolerancia a fallos.

Desventajas: Es solo una solución de búsqueda, y aún así tienes que implementar la parte de indexación tú mismo. En cuanto a la función de búsqueda, solo se satisfacen las necesidades más básicas. Hay menos historias de éxito y la madurez del proyecto es algo menor. Como necesita soportar distribución, será difícil personalizarlo para algunos requisitos complejos de consultas.

El inicio de sesión del hipervínculo es visible.

3:Contrib/índice Hadoop

Nota: El modo Map/Reducir, una solución de indexación distribuida, puede usarse con Katta.

Ventajas: Indexación distribuida y escalabilidad.

Desventajas: Solo el esquema de indexación, no la implementación de búsqueda. Funciona en modo lote con un soporte pobre para búsqueda en tiempo real.

El inicio de sesión del hipervínculo es visible.

4: La solución de código abierto de LinkedIn

Descripción: Una variedad de soluciones basadas en Lucene, incluyendo Zoie para búsqueda casi en tiempo real, Bobo para búsqueda de facetas, Decomposer para algoritmos de aprendizaje automático, Krati para repositorios de resumen, Sensei para envolver esquemas de bases de datos y más

Ventajas: Solución probada que soporta una implementación distribuida, escalable y con gran riqueza de funcionalidades

Contras: Demasiado vinculado a LinkedIn y poca personalización

El inicio de sesión del hipervínculo es visible.

5:Lucandra

Nota: Según Lucene, el índice existe en la base de datos de Cassandra

Ventajas: Consulta las ventajas de Cassandra

Contras: Consulta las desventajas de Cassandra. Además, esto es solo una demo y no ha sido verificado a fondo

El inicio de sesión del hipervínculo es visible.

6:HBasene

Nota: Según Lucene, el índice existe en la base de datos HBase

Beneficios: Consulte las ventajas de la HBasa

Desventajas: Consulta las desventajas de la HBasa. Además, en la implementación, los términos lucene se almacenan como filas, pero las listas de publicación correspondientes a cada término se almacenan como columnas. A medida que aumenta el número de listas de publicaciones para un solo término, la velocidad de la consulta se verá muy afectada


El inicio de sesión del hipervínculo es visible.

7: Xunsearch

Nota: Xunsearch adopta un diseño jerárquico estructurado, que incluye servicios de back-end y paquetes de desarrollo front-end, con jerarquías claras y sin intersección. El backend es un daemon escrito en C/C++, mientras que el frontend utiliza PHP, el lenguaje de scripting más popular, que resulta más cómodo para proyectos de búsqueda web. Para más detalles, véase Diseño Arquitectónico.

El inicio de sesión del hipervínculo es visible.






Anterior:Kit de desarrollo EOS Blockchain PHP
Próximo:Tutorial de JDK de instalación de Java de Centos 7
Renuncia:
Todo el software, materiales de programación o artículos publicados por Code Farmer Network son únicamente para fines de aprendizaje e investigación; El contenido anterior no se utilizará con fines comerciales o ilegales; de lo contrario, los usuarios asumirán todas las consecuencias. La información de este sitio proviene de Internet, y las disputas de derechos de autor no tienen nada que ver con este sitio. Debes eliminar completamente el contenido anterior de tu ordenador en un plazo de 24 horas desde la descarga. Si te gusta el programa, por favor apoya el software genuino, compra el registro y obtén mejores servicios genuinos. Si hay alguna infracción, por favor contáctanos por correo electrónico.

Mail To:help@itsvse.com