ElasticSearch, cuya versión 0.6 acaba de ver la luz el 9 de abril de 2010, se distribuye bajo una licencia Apache 2, y sus principales características son:
•Facilidad de configuración, para minimizar la puesta en marcha de un buscador
•Arquitectura diseñada pensando siempre en la distribución, para permitir escalar una solución de un nodo a cientos, ofreciendo alta disponibilidad, soportando grandes cantidades de datos y cortos tiempos de respuesta
•Sus búsquedas son en tiempo real
•Expone un API HTTP de tipo RESTful, y usa JSON tanto para peticiones como para respuestas. También se puede operar usando el API nativa en Java
•Está libre de esquema de datos, en el sentido de que no se necesita disponer de una definición explícita del esquema (redunda en facilidad de configuración)
•Soporta multitenancy, incluyendo múltiples índices, y múltiples tipos (piénsese en tipos de contenido en un CMS), y la posibilidad de buscar sobre cualquier combinación de ambos
•Cumple las propiedades ACID de los sistemas transaccionales, en las operaciones a nivel de documento
•Y por supesto, está basado en Lucene
El mayor inconveniente que presenta a día de hoy decantarse por una solución basada en ElasticSearch parece clara: su falta de madurez. Se trata de un proyecto que empieza a dar sus primeros pasos, y que carece del rodaje de sus competidores, concretamente de Apache Solr. Aunque no se encuentra en la Web ninguna comparación seria entre los dos productos, firmada por alguien que hubiese trabajado con ambos, vamos a aventurarnos a comentar algunas ventajas e inconvenientes que se pueden deducir después de leer sobre el tema.
En cuanto a los inconvenientes de ElasticSearch, parece que algunos podrían ser:
•Como ya se ha mencionado, su juventud
•La menor riqueza funcional; es debida al anterior punto, ya que seguramente irá creciendo a lo largo del tiempo (además, al tener una arquitectura “pluggable” y ser de código abierto, si no hay algo disponible, siempre te lo puedes hacer tú)
•El que el proyecto Apache Solr esté tan íntimamente ligado a Apache Lucene
La diferencia fundamental es el modelo distribuido: ElasticSearch, a diferencia de Solr (por ejemplo, en Solr no hay búsquedas distribuidas hasta la versión 1.3), se ha desarrollado desde cero, pensando en una solución distribuida:
•Gestiona de manera automática clusters de nodos
•Distribuye las búsquedas, pudiendo seguir 4 estrategias: “query and fetch”, “query then fetch”, y variantes anteponiendo una petición para “globalizar” el cálculo de la relevancia
•Sigue una estrategia “write behind”, permitiendo almacenar los índices en memoria y propagarlos a un repositorio no-volátil cada cierto tiempo
•Otra ventaja sería la rápida puesta en marcha de un buscador basado en ElasticSearch. A esto contribuye:
•Su facilidad de despliegue y de configuración, así como la facilidad para añadir nuevos nodos, índices o nuevos tipos de documento
•El que no sea necesario definir un esquema de datos de forma explícita