tutorial search solr lucene elasticsearch

tutorial - elasticsearch vs solr con respecto a la estructura de datos/características de consulta



solr vs elasticsearch (1)

He visto muchas preguntas (y buenas respuestas) que comparan la escalabilidad, la velocidad y los escenarios de implementación de elasticsearch y Solr, pero parece que no puedo encontrar buena información sobre las diferencias o puntos fuertes relativos a cómo las consultas pueden funcionar con el datos indexados.

Específicamente, estoy interesado en las diferencias entre elasticsearch y Solr en las siguientes áreas:

  1. capacidades de facetado : ¿cómo difieren su manejo de facetas, o son básicamente iguales?

  2. Manejo del esquema : parece que elasticsearch tiene un margen de flexibilidad en el sentido de que los esquemas se pueden definir sobre la marcha a través de la API de reposo, mientras que Solr requiere que estén predefinidos en schemas.xml (no he visto confirmación específica de esta diferencia, aunque ) ¿Existen diferencias sustantivas en cómo se usan los esquemas más allá de eso?

  3. filtros de indexación : ¿existen diferencias entre cómo se pueden optimizar los datos para búsquedas específicas? Por ejemplo, he visto mencionar cosas como la duplicación de campo y los filtros de tokenización de consultas para Solr que se suman a la personalización del algoritmo de búsqueda, pero no he visto mucha información del mismo tipo con respecto a elasticsearch, ¿pero tal vez solo maneja todo esto automáticamente?

  4. Expresividad de consulta : ¿son las DSL de consulta básicamente tan expresivas como las otras, o hay diferencias fundamentales?

  5. "potenciación" y / o personalización de resultados : ¿qué funciones existen para la codificación o el masaje de los resultados de búsqueda algorítmica?

Nuevamente, tenga en cuenta que no me interesan en absoluto los problemas de velocidad / escalabilidad / rendimiento, solo la expresividad de la estructuración de datos de búsqueda y el lenguaje de consulta. Posiblemente, toda esta pregunta podría resumirse de la siguiente manera: ¿hay alguna búsqueda que pueda realizar o una estructura de datos que puedo crear en elasticsearch que no puedo replicar en Solr, o viceversa?


  1. la facetación es casi la misma, excepto que ES también lo permite mediante scripts dinámicos y Solr permite la paginación de facetas. También en Solr hay un esquema de facetado conveniente para hacer facetas de estilo de búsqueda de tienda simple (nota: también es relativamente fácil con ES pero no de fábrica). La facetación ES puede ser más poderosa ya que no hay necesidad de unir facetas a la filtración.

  2. para el esquema de ES se puede actualizar a través de API! o definirlo en un archivo y se especifica para un tipo . para Solr, usted crea un archivo de configuración por índice . Por cierto: con los campos dinámicos tienes un esquema menos restrictivo para Solr.

  3. ES omite solo la función de auto calentamiento (pero esto está relacionado con el rendimiento, por lo que no es interesante para ti;)) y el grupo por función. De lo contrario, ambos usan material lucene similar. ES permite muchas combinaciones avanzadas como es posible en lucene. El elemento secundario parental es similar al grupo por elemento y no se implementa en Solr IMO.

  4. La consulta estándar para ES está formulada a través de JSON, por lo que puede crear casi todo lo que pueda crear a través de lucene. En Solr puedes hacer muchas cosas avanzadas, pero a menudo necesitas algún conocimiento fundamental de Solr, como params locales, etc. Echa un vistazo a esta agradable discusión .

  5. No entiendo esto :)

¿Hay alguna búsqueda que pueda realizar o una estructura de datos que pueda crear en elasticsearch que no pueda replicar en Solr, o viceversa?

En ES, existe la característica de percolador que probablemente sea más difícil de implementar con Solr. En ES, también tiene la función de control de versiones para implementar el bloqueo optimista, tiene alias de índice y una consulta de exploración para navegar a fondo en su índice, sin estar seguro si Solr tiene características similares. Por ejemplo, el aliasing ayuda a hacer una implementación de índice rodante. relativo corto.