Elasticsearch

Summary

Elasticsearch es un servidor de búsqueda basado en Lucene. Provee un motor de búsqueda de texto completo, distribuido y con capacidad de multitenencia con una interfaz web RESTful y con documentos JSON. Elasticsearch está desarrollado en Java y está publicado como código abierto/source available conforme a distintos esquemas de licencia a lo largo del tiempo (véase la sección Licenciamiento).

Elasticsearch
Información general
Tipo de programa Búsqueda e index
Autor Shay Banon
Desarrollador Shay Banon
Licencia
Estado actual Activo
Información técnica
Programado en Java
Plataformas admitidas máquina virtual Java
Versiones
Última versión estable 8.2.3 (14 de junio de 2022 (3 años, 3 meses y 10 días))
Enlaces
Sitio web oficial
Repositorio de código
Elasticsearch BV
Creador Shay Banon
Tipo base de datos documental, Distributed database management system, buscador, software disponible en el código fuente y empresa de capital abierto
Industria Desarrollo de software
Servicios Soluciones comerciales sobre Elasticsearch
Sitio web www.elastic.co
Shay Banon hablando sobre Elasticsearch en Berlín Buzzwords 2010

Historia

editar

Shay Banon creó Compass en 2004.[4]​ Mientras pensaba en la tercera versión de Compass, llegó a la conclusión de que habría que reescribir grandes partes de su código para “crear una solución de búsqueda escalable”. Entonces creó “una solución construida para ser distribuida desde el comienzo” con la interfaz JSON sobre HTTP, muy común y adecuada para lenguajes de programación que no sean Java.[4]​ Shay Banon liberó la primera versión en febrero de 2010.[5]

En junio de 2014, la compañía anunció la recaudación de US $70 millones en una ronda de financiación Serie C, tan sólo pasando 18 meses de la creación de la misma. La ronda fue liderada por New Enterprise Associates (NEA), además de otros como Benchmark Capital e Index Ventures. Esta ronda obtuvo una financiación total de US $104 millones.[6]

Versión Fecha original de liberación Última versión Fecha de liberación Mantenimiento[7]
Versión antigua, sin servicio técnico: 0.4 2010-02-08 0.4.0 2010-02-08 No soportado
Versión antigua, sin servicio técnico: 0.5 2010-03-05[8] 0.5.1 2010-03-09 No soportado
Versión antigua, sin servicio técnico: 0.6 2010-04-09[9] 0.6.0 2010-04-09 No soportado
Versión antigua, sin servicio técnico: 0.7 2010-05-14[10] 0.7.1 2010-05-17[11] No soportado
Versión antigua, sin servicio técnico: 0.8 2010-05-27[12] 0.8.0 2010-05-27 No soportado
Versión antigua, sin servicio técnico: 0.9 2010-07-26[13] 0.9.0 2010-07-26 No soportado
Versión antigua, sin servicio técnico: 0.10 2010-08-27[14] 0.10.0 2010-08-27 No soportado
Versión antigua, sin servicio técnico: 0.11 2010-09-29[15] 0.11.0 2010-09-29 No soportado
Versión antigua, sin servicio técnico: 0.12 2010-10-18[16] 0.12.1 2010-10-27 No soportado
Versión antigua, sin servicio técnico: 0.13 2010-11-18[17] 0.13.1 2010-12-03 No soportado
Versión antigua, sin servicio técnico: 0.14 2010-12-27[18] 0.14.4 2011-01-31 No soportado
Versión antigua, sin servicio técnico: 0.15 2011-02-18[19] 0.15.2 2011-03-07 No soportado
Versión antigua, sin servicio técnico: 0.16 2011-04-23[20] 0.16.5 2011-07-26 No soportado
Versión antigua, sin servicio técnico: 0.17 2011-07-19[21] 0.17.10 2011-11-16 No soportado
Versión antigua, sin servicio técnico: 0.18 2011-10-26[22] 0.18.7 2012-01-10[23] No soportado
Versión antigua, sin servicio técnico: 0.19 2012-03-01[24] 0.19.12 2012-12-04[25] No soportado
Versión antigua, sin servicio técnico: 0.20 2012-12-07[26] 0.20.6 2013-03-25[27] No soportado
Versión antigua, sin servicio técnico: 0.90 2013-04-29[28] 0.90.13 2014-03-25[29] No soportado
Versión antigua, sin servicio técnico: 1.0 2014-02-12[30] 1.0.3 2014-04-16[31] No soportado
Versión antigua, sin servicio técnico: 1.1 2014-03-25[29] 1.1.2 2014-05-22[32] No soportado
Versión antigua, sin servicio técnico: 1.2 2014-05-22[32] 1.2.4 2014-08-13[33] No soportado
Versión antigua, sin servicio técnico: 1.3 2014-07-23[34] 1.3.9 2015-02-19[35] No soportado
Versión antigua, sin servicio técnico: 1.4 2014-11-05[36] 1.4.5 2015-04-27[37] No soportado
Versión antigua, sin servicio técnico: 1.5 2015-03-23[38] 1.5.2 2015-04-27[37] No soportado
Versión antigua, sin servicio técnico: 1.6 2015-06-09[39] 1.6.2 2015-07-29[40] No soportado
Versión antigua, sin servicio técnico: 1.7 2015-07-16[41] 1.7.5 2016-02-02[42] No soportado
Versión antigua, sin servicio técnico: 2.0 2015-10-28[43] 2.0.2 2015-12-17[44] No soportado
Versión antigua, sin servicio técnico: 2.1 2015-11-24[45] 2.1.2 2016-02-02[42] No soportado
Versión antigua, con servicio técnico: 2.2 2016-02-02[42] 2.2.2 2016-03-30[46] Soportado
Versión antigua, con servicio técnico: 2.3 2016-03-30[46] 2.3.3 2016-05-18[47] Soportado
Versión estable actual: 2.4 2016-04-31[48] 2.4.5 2017-04-27[49] Soportado
Versión antigua, con servicio técnico: 5.0 2016-09-26[50] 5.0.2 2016-11-29[51] Soportado
Versión antigua, con servicio técnico: 5.1 2016-12-08[52] 5.1.2 2017-01-12[53] Soportado
Versión antigua, con servicio técnico: 5.2 2017-01-31[54] 5.2.2 2017-02-28[55] Soportado
Versión antigua, con servicio técnico: 5.3 2017-03-28[56] 5.3.3 2017-06-01[57] Soportado
Versión estable actual: 5.4 2017-05-04[58] 5.4.3 2017-06-27[59] Soportado
Leyenda:
Versión antigua
Versión antigua, con soporte técnico
Última versión
Última versión previa
Lanzamiento futuro

Versiones recientes (referencia rápida)

editar
  • 8.0 (10 de febrero de 2022): búsqueda vectorial nativa, mejoras de seguridad y rendimiento.[60]
  • 9.1.3 (28 de agosto de 2025, notas del 23–28 de agosto): correcciones y actualizaciones de seguridad; versión estable actual disponible para descarga.[61][62]​ Véase también la tabla de ciclos de vida (EOL).[63]

Licenciamiento

editar

Históricamente, partes significativas del código se publicaron bajo Apache 2.0. En enero de 2021 se anunció el cambio a doble licencia source-available: Elastic License (ELv2) y SSPL, a partir de la versión 7.11.[1]​ En 2024, Elastic comunicó la incorporación de AGPLv3 como opción de licencia adicional para el código de Elasticsearch y Kibana.[64][65]​ La distribución por defecto descargable se rige por Elastic License 2.0.[61]

Bifurcación OpenSearch

editar

En abril de 2021 Amazon Web Services anunció OpenSearch, un fork de las últimas versiones bajo Apache 2.0 de Elasticsearch (7.10.2) y Kibana, con servicio gestionado y comunidad propia.[66][67]​ En 2024, AWS anunció el traspaso del proyecto al paraguas de la Linux Foundation.[68]​ Elastic mantiene que OpenSearch se basa en versiones antiguas y no incorpora lanzamientos actuales de Elasticsearch/Kibana.[69]

Queries

editar

Elasticsearch utiliza Query DSL (Lenguaje de dominio específico) para realizar las consultas a los documentos indexados. Es un lenguaje sumamente flexible y de gran alcance, además de simple, que permite conocer y explorar los datos de la mejor manera. Al ser utilizado a través de una interfaz de tipo JSON, las consultas son muy sencillas de leer y, lo más importante, de depurar.

Sobre la base de su estructura y componentes, las consultas se componen de dos cláusulas: "Leaf Query Clauses" y "Compound Query Clauses". La primera hace referencia a aquellas consultas que tienen operaciones como "match", "term" o "range", que devuelven un valor específico solicitado. Las segundas se podría decir que son una combinación de la primera, una manera de realizar consultas "conjuntas" para obtener información más compleja y detallada.

Tipos de consultas

editar

Una consulta comienza con la palabra "query" seguida de unas condiciones y filtros dentro, en la forma de un objeto JSON. Existen distintos tipo de consultas que podemos identificar, por ejemplo:

Match all query

editar

La consulta más básica que se puede hacer. Devuelve todos los objetos que se encuentren indexados:

{
   "query":{
      "match_all":{}
   }
}

Match query

editar

Este tipo de consulta se utiliza para realizar una búsqueda donde se busca igualar determinados valores de un término o una frase. Entonces, si buscamos, por ejemplo dentro de nuestra base de datos, todos los objetos cuyo atributo color es verde, tomaría la siguiente forma:

{
   "query":{
      "match" : {
         "color":"verde"
      }
   }
}

Multi match query

editar

Muy similar a la consulta descrita anteriormente, pero en lugar de buscar la coincidencia con un valor solo, chequea con varios campos:

{
   "query":{
      "multi_match" : {
         "query": "montevideo",
         "fields": [ "ciudad", "departamento" ]
      }
   }
}

Term queries

editar

Este tipo de consultas se utilizan cuando se trabaja con datos como números o fechas, para buscar el valor de un término concreto:

{
   "query":{
      "term":{"animal":"perro"}
   }
}

Range query

editar

Otro tipo de consultas son aquellas que buscan por el rango de determinado atributo. Se utilizan distintos operadores ("gte": mayor o igual a determinado valor, "gt": mayor a determinado valor, "lte": menor o igual , "lt": menor):

{
   "query":{
      "range":{
         "rating":{
            "gte":4
         }
      }
   }
}

Ventajas

editar

Se podrían enumerar varias ventajas que brinda esta herramienta. Algunas de las más destacables son las siguientes:

  • Al estar desarrollado en Java, es compatible en todas las plataformas donde Java lo sea.
  • Tiene una gran velocidad de respuesta.
  • Es distribuido, lo que lo hace fácilmente escalable y adaptable a las distintas situaciones.
  • Simple realización de respaldos de los datos almacenados.
  • Utiliza objetos JSON como respuesta, por lo que es fácil de invocar desde varios lenguajes de programación.

Desventajas

editar

Como todo, ElasticSearch posee algunas desventajas:

  • Sólo soporta como tipos de respuesta JSON, lo que lo limita al no soportar otros lenguajes, como CSV o XML.
  • Algunas situaciones pueden generar casos de split-brain.

Resumen

editar

Elasticsearch puede ser usado para buscar todo tipo de documentos. La búsqueda es escalable y casi en tiempo real, soportando tenencia múltiple.[70]​ “Es distribuido, haciendo que los índices se puedan dividir en fragmentos y cada uno teniendo cero o más réplicas. Cada nodo alberga uno o más fragmentos, actuando como un coordinador para delegar operaciones a los fragmentos correctos. El rebalanceo y ruteo se realizan automáticamente […]”.[70]

Utiliza Lucene e intenta hacer todas sus funciones disponibles a través de JSON y Java API. Soporta facetado y percolación,[71]​ que puede ser útil para notificar si nuevos documentos coinciden con consultas registradas.

Otra funcionalidad llamada "gateway" maneja la persistencia a largo plazo del índice;[72]​ por ejemplo, se puede recuperar un índice del gateway en caso de una caída del servidor. Soporta peticiones GET en tiempo real y esto lo hace válido para una solución NoSQL,[73]​ pero carece de transacciones distribuidas.[74]

Usuarios destacados

editar

La lista de usuarios destacados de Elasticsearch[75]​ incluye a Wikimedia,[76]StumbleUpon,[77]Mozilla,[78][79]Quora,[80]Foursquare,[81]Etsy,[82]SoundCloud,[83]GitHub,[84]FDA,[85]CERN,[86]​ BuscaMil y Stack Exchange.[87]​ También es el corazón del proyecto europeo de centralización de memorias de traducción para administraciones públicas europeas NEC-TM liderado por Pangeanic dentro del programa "Connectar Europa".

Interacción con otras herramientas de software

editar

Elasticsearch forma parte de los sistemas de gestión de eventos e información de seguridad, específicamente en la Plataforma ELK (siglas de ElasticSearch-LogStash-Kibana). Elasticsearch también acepta de manera nativa otras herramientas de visualización y exploración, pudiéndose utilizar Grafana y/o Kibana para tales propósitos.[88]

Enlaces externos

editar
  • Página web oficial (en inglés)

Referencias

editar
  1. a b «Elastic license update». Elastic. 3 de junio de 2021. Consultado el 6 de septiembre de 2025. 
  2. «Elasticsearch will be open source again as CTO declares “changed landscape”» (en inglés). DevClass. 2 de septiembre de 2024. Consultado el 6 de septiembre de 2025. 
  3. «Elastic’s Journey from Apache 2.0 to AGPL 3» (en inglés). Pureinsights. 10 de septiembre de 2024. Consultado el 6 de septiembre de 2025. 
  4. a b Banon, Shay. «The Future of Compass & ElasticSearch». Archivado desde el original el 27 de agosto de 2013. 
  5. Banon, Shay (8 de febrero de 2010). «You Know, for Search». Archivado desde el original el 16 de enero de 2013. 
  6. http://techcrunch.com/2014/06/05/elasticsearch-scores-70m-in-series-c-to-fund-growth-spurt/
  7. «Elastic Product End of Life Dates». Consultado el 27 de abril de 2016. 
  8. «0.5.0 Released». Consultado el 29 de noviembre de 2015. 
  9. «0.6.0 Released». Consultado el 29 de noviembre de 2015. 
  10. «0.7.0 Released». Consultado el 29 de noviembre de 2015. 
  11. «0.7.1 Released». Consultado el 29 de noviembre de 2015. 
  12. «0.8.0 Released». Consultado el 29 de noviembre de 2015. 
  13. «0.9.0 Released». Consultado el 29 de noviembre de 2015. 
  14. «0.10.0 Released». Consultado el 29 de noviembre de 2015. 
  15. «0.11.0 Released». Consultado el 29 de noviembre de 2015. 
  16. «0.12.0 Released». Consultado el 29 de noviembre de 2015. 
  17. «0.13.0 Released». Consultado el 29 de noviembre de 2015. 
  18. «0.14.0 Released». Consultado el 29 de noviembre de 2015. 
  19. «0.15.0 Released». Consultado el 29 de noviembre de 2015. 
  20. «0.16.0 Released». Consultado el 29 de noviembre de 2015. 
  21. «0.17.0 Released». Consultado el 29 de noviembre de 2015. 
  22. «0.18.0 Released». Consultado el 29 de noviembre de 2015. 
  23. «0.18.7 Released». Consultado el 29 de noviembre de 2015. 
  24. «0.19.0 Released». Consultado el 29 de noviembre de 2015. 
  25. «0.19.12 Released». Consultado el 29 de noviembre de 2015. 
  26. «0.20.0 Released». Consultado el 29 de noviembre de 2015. 
  27. «0.20.6 Released». Consultado el 29 de noviembre de 2015. 
  28. «0.90.0 Released». Consultado el 29 de noviembre de 2015. 
  29. a b «Elasticsearch 1.1.0, 1.0.2 and 0.90.13 released». Consultado el 29 de noviembre de 2015. 
  30. «1.0.0 Released». Consultado el 29 de noviembre de 2015. 
  31. «Elasticsearch 1.1.1 and 1.0.3 Released». Consultado el 29 de noviembre de 2015. 
  32. a b «Elasticsearch 1.2.0 and 1.1.2 released». Consultado el 29 de noviembre de 2015. 
  33. «Elasticsearch 1.3.2 and 1.2.4 Released». Consultado el 29 de noviembre de 2015. 
  34. «Elasticsearch 1.3.0 And 1.2.3 Released». Consultado el 29 de noviembre de 2015. 
  35. «Elasticsearch 1.4.4 and 1.3.9 Released». Consultado el 29 de noviembre de 2015. 
  36. «Elasticsearch 1.4.0 And 1.3.5 Released». Consultado el 29 de noviembre de 2015. 
  37. a b «Elasticsearch 1.5.2 and 1.4.5 Released». Consultado el 29 de noviembre de 2015. 
  38. «Elasticsearch 1.5.0 Released». Consultado el 29 de noviembre de 2015. 
  39. «Elasticsearch 1.6.0 released». Consultado el 29 de noviembre de 2015. 
  40. «Elasticsearch 1.7.1 and 1.6.2 released». Consultado el 29 de noviembre de 2015. 
  41. «Elasticsearch 1.7.0 and 1.6.1 released». Consultado el 29 de noviembre de 2015. 
  42. a b c «Elasticsearch 2.2.0 and 2.1.2 and 1.7.5 released». Consultado el 2 de febrero de 2016. 
  43. «Elasticsearch 2.0.0 GA released». Consultado el 29 de noviembre de 2015. 
  44. «Elasticsearch 2.1.1, 2.0.2, and 1.7.4 released». Consultado el 17 de diciembre de 2015. 
  45. «Elasticsearch 2.1.0 and 2.0.1 released». Consultado el 29 de noviembre de 2015. 
  46. a b «Elasticsearch 2.3.0 and 2.2.2 released». Consultado el 30 de marzo de 2016. 
  47. «Elasticsearch 2.3.3 released». Consultado el 18 de mayo de 2016. 
  48. «Elasticsearch 2.4.0 released». Consultado el 28 de abril de 2017. 
  49. «Elasticsearch 2.4.5 released». Consultado el 18 de mayo de 2016. 
  50. «Elasticsearch 5.0.0-GA released». Consultado el 26 de septiembre de 2016. 
  51. «Elasticsearch 5.0.2 released». Consultado el 29 de noviembre de 2016. 
  52. «Elasticsearch 5.1.1 released». Consultado el 26 de septiembre de 2016. 
  53. «Elasticsearch 5.1.2 released». Consultado el 12 de enero de 2017. 
  54. «Elasticsearch 5.2.0 released». Consultado el 31 de enero de 2017. 
  55. «Elasticsearch 5.2.2 released». Consultado el 28 de febrero de 2017. 
  56. «Elasticsearch 5.3.0 released». Consultado el 28 de marzo de 2017. 
  57. «Elasticsearch 5.3.3 released». Consultado el 1 de junio de 2017. 
  58. «Elasticsearch 5.4.0 released». Consultado el 4 de mayo de 2017. 
  59. «Elasticsearch 5.4.3 released». Consultado el 27 de junio de 2017. 
  60. «Elastic 8.0 — A new era of speed, scale, relevance, and simplicity» (en inglés). Elastic. 10 de febrero de 2022. Consultado el 6 de septiembre de 2025. 
  61. a b «Download Elasticsearch». Consultado el 6 de septiembre de 2025. 
  62. «Elasticsearch release notes». Consultado el 6 de septiembre de 2025. 
  63. «Elastic Product End of Life Dates». Consultado el 6 de septiembre de 2025. 
  64. «Elasticsearch will be open source again as CTO declares “changed landscape”». DevClass. 2 de septiembre de 2024. Consultado el 6 de septiembre de 2025. 
  65. «Elastic’s Journey from Apache 2.0 to AGPL 3». Pureinsights. 10 de septiembre de 2024. Consultado el 6 de septiembre de 2025. 
  66. «Introducing OpenSearch». AWS. 12 de abril de 2021. Consultado el 6 de septiembre de 2025. 
  67. «OpenSearch FAQ». Consultado el 6 de septiembre de 2025. 
  68. «AWS brings OpenSearch under the Linux Foundation umbrella». TechCrunch. 16 de septiembre de 2024. Consultado el 6 de septiembre de 2025. 
  69. «What is the OpenSearch project?». Elastic. Consultado el 6 de septiembre de 2025. 
  70. a b «Official Website». Elasticsearch.org. Archivado desde el original el 10 de marzo de 2015. Consultado el 4 de febrero de 2014. 
  71. «percolate at elasticsearch.org reference». Elasticsearch.org. Archivado desde el original el 2 de octubre de 2013. Consultado el 4 de febrero de 2014. 
  72. «elasticsearch Guide: Gateway». elasticsearch. Archivado desde el original el 1 de octubre de 2013. Consultado el 19 de abril de 2013. 
  73. «ElasticSearch as database». Karussell.wordpress.com. Archivado desde el original el 21 de agosto de 2018. Consultado el 4 de febrero de 2014. 
  74. «No transaction support». Elasticsearch-users.115913.n3.nabble.com. 8 de julio de 2010. Archivado desde el original el 6 de octubre de 2018. Consultado el 4 de febrero de 2014. 
  75. «Elasticsearch.org Case Studies». Elasticsearch.org. Consultado el 3 de octubre de 2014. 
  76. Horohoe, Chad (6 de enero de 2014). «Wikimedia moving to Elasticsearch». Consultado el 21 de febrero de 2014. 
  77. «StumbleUpon | Developer Blog». StumbleUpon.com. Consultado el 21 de febrero de 2014. 
  78. «Copia archivada». Archivado desde el original el 4 de marzo de 2015. Consultado el 25 de marzo de 2015. 
  79. «ElasticSearch helps Mozilla Metrics team». Pedroalves-bi.blogspot.com. Consultado el 4 de febrero de 2014. 
  80. «Full Text Search on Quora». Quora.com. Consultado el 4 de febrero de 2014. 
  81. «foursquare now uses Elastic Search (and on a related note: Slashem also works with Elastic Search)! | Foursquare Engineering Blog». Engineering.foursquare.com. Consultado el 21 de febrero de 2014. 
  82. «Oculus: The metric correlation component of Etsy's Kale system». Github.com. Consultado el 4 de febrero de 2014. 
  83. Petar Djekic. «Architecture behind our new Search and Explore experience». Backstage.soundcloud.com. Archivado desde el original el 3 de diciembre de 2013. Consultado el 4 de febrero de 2014. 
  84. «A Whole New Code Search 路 GitHub». Github.com. 23 de enero de 2013. Consultado el 21 de febrero de 2014. 
  85. «openFDA - About the API». FDA.gov. 
  86. «Needle in a haystack - Using Elasticsearch to run the Large Hadron Collider of CERN». medium.com. 
  87. Craver, Nick (22 de noviembre de 2013). «What it takes to run Stack Overflow». Consultado el 2 de octubre de 2014. 
  88. «Using Elasticsearch in Grafana» (html). Grafana Org. (en inglés). Consultado el 19 de diciembre de 2018. «Grafana ships with advanced support for Elasticsearch. You can do many types of simple or complex Elasticsearch queries to visualize logs or metrics stored in Elasticsearch. You can also annotate your graphs with log events stored in Elasticsearch.» 
  •   Datos: Q3050461
  •   Multimedia: Elasticsearch / Q3050461