Elasticsearch
Elasticsearch | ||
---|---|---|
![]() | ||
Información general | ||
Tipo de programa | Búsqueda y index | |
Autor | Shay Banon | |
Desarrollador | Shay Banon | |
Licencia | Apache License 2.0 | |
Estado actual | Activo | |
Información técnica | ||
Programado en | Java | |
Plataformas admitidas | máquina virtual Java | |
Versiones | ||
Última versión estable | 9.0.23 de junio de 2025 | |
Enlaces | ||
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 | Software Development | |
Servicios | Elasticsearch commercial solutions | |
Sitio web | www.elastic.co | |

Elasticsearch es un servidor de búsqueda basado en Lucene. Provee un motor de búsqueda de texto completo, distribuido y con capacidad de multi-tenencia con una interfaz web RESTful y con documentos JSON. Elasticsearch está desarrollado en Java y está publicado como código abierto bajo las condiciones de la licencia Apache.
Historia
Shay Banon creó Compass en 2004.[1] 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.[1] Shay Banon liberó la primera versión en febrero de 2010.[2]
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.[3]
Versión | Fecha original de liberación | Última versión | Fecha de liberación | Mantenimiento[4] |
---|---|---|---|---|
0.4 | 2010-02-08 | 0.4.0 | 2010-02-08 | No soportado |
0.5 | 2010-03-05[5] | 0.5.1 | 2010-03-09 | No soportado |
0.6 | 2010-04-09[6] | 0.6.0 | 2010-04-09 | No soportado |
0.7 | 2010-05-14[7] | 0.7.1 | 2010-05-17[8] | No soportado |
0.8 | 2010-05-27[9] | 0.8.0 | 2010-05-27 | No soportado |
0.9 | 2010-07-26[10] | 0.9.0 | 2010-07-26 | No soportado |
0.10 | 2010-08-27[11] | 0.10.0 | 2010-08-27 | No soportado |
0.11 | 2010-09-29[12] | 0.11.0 | 2010-09-29 | No soportado |
0.12 | 2010-10-18[13] | 0.12.1 | 2010-10-27 | No soportado |
0.13 | 2010-11-18[14] | 0.13.1 | 2010-12-03 | No soportado |
0.14 | 2010-12-27[15] | 0.14.4 | 2011-01-31 | No soportado |
0.15 | 2011-02-18[16] | 0.15.2 | 2011-03-07 | No soportado |
0.16 | 2011-04-23[17] | 0.16.5 | 2011-07-26 | No soportado |
0.17 | 2011-07-19[18] | 0.17.10 | 2011-11-16 | No soportado |
0.18 | 2011-10-26[19] | 0.18.7 | 2012-01-10[20] | No soportado |
0.19 | 2012-03-01[21] | 0.19.12 | 2012-12-04[22] | No soportado |
0.20 | 2012-12-07[23] | 0.20.6 | 2013-03-25[24] | No soportado |
0.90 | 2013-04-29[25] | 0.90.13 | 2014-03-25[26] | No soportado |
1.0 | 2014-02-12[27] | 1.0.3 | 2014-04-16[28] | No soportado |
1.1 | 2014-03-25[26] | 1.1.2 | 2014-05-22[29] | No soportado |
1.2 | 2014-05-22[29] | 1.2.4 | 2014-08-13[30] | No soportado |
1.3 | 2014-07-23[31] | 1.3.9 | 2015-02-19[32] | No soportado |
1.4 | 2014-11-05[33] | 1.4.5 | 2015-04-27[34] | No soportado |
1.5 | 2015-03-23[35] | 1.5.2 | 2015-04-27[34] | No soportado |
1.6 | 2015-06-09[36] | 1.6.2 | 2015-07-29[37] | No soportado |
1.7 | 2015-07-16[38] | 1.7.5 | 2016-02-02[39] | No soportado |
2.0 | 2015-10-28[40] | 2.0.2 | 2015-12-17[41] | No soportado |
2.1 | 2015-11-24[42] | 2.1.2 | 2016-02-02[39] | No soportado |
2.2 | 2016-02-02[39] | 2.2.2 | 2016-03-30[43] | Soportado |
2.3 | 2016-03-30[43] | 2.3.3 | 2016-05-18[44] | Soportado |
2.4 | 2016-04-31[45] | 2.4.5 | 2017-04-27[46] | Soportado |
5.0 | 2016-09-26[47] | 5.0.2 | 2016-11-29[48] | Soportado |
5.1 | 2016-12-08[49] | 5.1.2 | 2017-01-12[50] | Soportado |
5.2 | 2017-01-31[51] | 5.2.2 | 2017-02-28[52] | Soportado |
5.3 | 2017-03-28[53] | 5.3.3 | 2017-06-01[54] | Soportado |
5.4 | 2017-05-04[55] | 5.4.3 | 2017-06-27[56] | Soportado |
Leyenda: Versión antigua Versión antigua, con soporte técnico Última versión Última versión previa |
Para más información ingresar a https://www.elastic.co/support/eol.
Queries
Elasticsearch utiliza Query DSL (Lenguaje de dominio específico) para realizar las consultas a los documentos indexados. Es un lenguaje sumamente flexible, y abarcativo; además de simple para conocer y explorar la data de la mejor manera. Al ser utilizado a través de una interfase de tipo JSON, las consultas se convierten muy sencillas de leer, y lo más importante: de debugear.
Sobre la base de su estructura y componentes, las queries 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 especifico solicitado. Las segundas se podría decir que son una combinación de la primera, de manera de hacer consultas "conjuntas", para obtener información más compleja y detallada.
Tipos de consultas
Una query ó consulta comienza con la palabra "query" y luego tiene condiciones y filtros dentro, en la forma de un objeto JSON. Existen distintos tipo de consultas que podemos identificar, por ejemplo:
Match all query
La consulta más básica que se puede hacer. Devuelve todos los objetos que se encuentren indexados
{
"query":{
"match_all":{}
}
}
Match query
Este tipo de consulta se utiliza para realizar una búsqueda donde se busca igualar determinado valor 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
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
Este tipo de consultas se utiizan cuando se trabaja con data como numeros o fechas, para buscar el valor de un término concreto:
{
"query":{
"term":{"animal":"perro"}
}
}
Range query
Otro tipo de consultas son aquellas que buscan por el rango de determinado atributo. Se utilizan distintos operadores ("gte": mayor ó igual a determinado valor, "gt": mayor a determinado valor, "lte": menor ó igual , "lt": menor:
{
"query":{
"range":{
"rating":{
"gte":4
}
}
}
}
Estos son algunos de los ejemplos de queries que se pueden utilizar. Son muchas más las opciones, los operadores y los filtros que se pueden usar; sobre todo si se empieza a combinar los mismos.
Ventajas
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 sumamente compatible con casi todas las plataformas.
- Tiene una gran velocidad de respuesta.
- Esta distribuido, lo que lo hace fácilmente escalable y adaptable a las distintas situaciones.
- Simple realizar respaldos de los datos que se tienen.
- Utiliza objetos JSON como respuesta, por lo que es fácil de invocar a partir de varios lenguajes de programación.
Desventajas
Como todo, ElasticSearch posee algunas (pocas) desventajas:
- Solo soporta como tipos de respuesta JSON, lo que si bien lo hace accesible, también lo limita al no involucrar otros lenguajes, como podrían ser: CSV ó XML.
- Puede suceder que en algunas situaciones caiga en un caso de "split brain".
Resumen
Elasticsearch puede ser usado para buscar todo tipo de documentos. Provee búsqueda escalable, con búsqueda casi a tiempo real y soporta multi-tenencia.[57] “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 […]”.[57]
Utiliza Lucene e intenta hacer todas sus funciones disponibles a través de JSON y Java API. Soporta facetado y percolación,[58] 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;[59] por ejemplo, se puede recuperar un índice del gateway en caso de una caída del servidor. Soporta peticionesGET en tiempo real y esto lo hace válido para una solución NoSQL,[60] pero carece de transacciones distribuidas.[61]
Usuarios destacados
La lista de usuarios destacados de Elasticsearch[62] incluye a Wikimedia,[63] StumbleUpon,[64] Mozilla,[65][66] Quora,[67] Foursquare,[68] Etsy,[69] SoundCloud,[70] GitHub,[71] FDA,[72] CERN,[73] y Stack Exchange.[74]
Enlaces externos
- Página web oficial (en inglés)
Referencias
- ↑ a b Banon, Shay. «The Future of Compass & ElasticSearch». Archivado desde el original el 27 de agosto de 2013.
- ↑ Banon, Shay (8 de febrero de 2010). «You Know, for Search». Archivado desde el original el 16 de enero de 2013.
- ↑ http://techcrunch.com/2014/06/05/elasticsearch-scores-70m-in-series-c-to-fund-growth-spurt/
- ↑ «Elastic Product End of Life Dates». Consultado el 27 de abril de 2016.
- ↑ «0.5.0 Released». Consultado el 29 de noviembre de 2015.
- ↑ «0.6.0 Released». Consultado el 29 de noviembre de 2015.
- ↑ «0.7.0 Released». Consultado el 29 de noviembre de 2015.
- ↑ «0.7.1 Released». Consultado el 29 de noviembre de 2015.
- ↑ «0.8.0 Released». Consultado el 29 de noviembre de 2015.
- ↑ «0.9.0 Released». Consultado el 29 de noviembre de 2015.
- ↑ «0.10.0 Released». Consultado el 29 de noviembre de 2015.
- ↑ «0.11.0 Released». Consultado el 29 de noviembre de 2015.
- ↑ «0.12.0 Released». Consultado el 29 de noviembre de 2015.
- ↑ «0.13.0 Released». Consultado el 29 de noviembre de 2015.
- ↑ «0.14.0 Released». Consultado el 29 de noviembre de 2015.
- ↑ «0.15.0 Released». Consultado el 29 de noviembre de 2015.
- ↑ «0.16.0 Released». Consultado el 29 de noviembre de 2015.
- ↑ «0.17.0 Released». Consultado el 29 de noviembre de 2015.
- ↑ «0.18.0 Released». Consultado el 29 de noviembre de 2015.
- ↑ «0.18.7 Released». Consultado el 29 de noviembre de 2015.
- ↑ «0.19.0 Released». Consultado el 29 de noviembre de 2015.
- ↑ «0.19.12 Released». Consultado el 29 de noviembre de 2015.
- ↑ «0.20.0 Released». Consultado el 29 de noviembre de 2015.
- ↑ «0.20.6 Released». Consultado el 29 de noviembre de 2015.
- ↑ «0.90.0 Released». Consultado el 29 de noviembre de 2015.
- ↑ a b «Elasticsearch 1.1.0, 1.0.2 and 0.90.13 released». Consultado el 29 de noviembre de 2015.
- ↑ «1.0.0 Released». Consultado el 29 de noviembre de 2015.
- ↑ «Elasticsearch 1.1.1 and 1.0.3 Released». Consultado el 29 de noviembre de 2015.
- ↑ a b «Elasticsearch 1.2.0 and 1.1.2 released». Consultado el 29 de noviembre de 2015.
- ↑ «Elasticsearch 1.3.2 and 1.2.4 Released». Consultado el 29 de noviembre de 2015.
- ↑ «Elasticsearch 1.3.0 And 1.2.3 Released». Consultado el 29 de noviembre de 2015.
- ↑ «Elasticsearch 1.4.4 and 1.3.9 Released». Consultado el 29 de noviembre de 2015.
- ↑ «Elasticsearch 1.4.0 And 1.3.5 Released». Consultado el 29 de noviembre de 2015.
- ↑ a b «Elasticsearch 1.5.2 and 1.4.5 Released». Consultado el 29 de noviembre de 2015.
- ↑ «Elasticsearch 1.5.0 Released». Consultado el 29 de noviembre de 2015.
- ↑ «Elasticsearch 1.6.0 released». Consultado el 29 de noviembre de 2015.
- ↑ «Elasticsearch 1.7.1 and 1.6.2 released». Consultado el 29 de noviembre de 2015.
- ↑ «Elasticsearch 1.7.0 and 1.6.1 released». Consultado el 29 de noviembre de 2015.
- ↑ a b c «Elasticsearch 2.2.0 and 2.1.2 and 1.7.5 released». Consultado el 2 de febrero de 2016.
- ↑ «Elasticsearch 2.0.0 GA released». Consultado el 29 de noviembre de 2015.
- ↑ «Elasticsearch 2.1.1, 2.0.2, and 1.7.4 released». Consultado el 17 de diciembre de 2015.
- ↑ «Elasticsearch 2.1.0 and 2.0.1 released». Consultado el 29 de noviembre de 2015.
- ↑ a b «Elasticsearch 2.3.0 and 2.2.2 released». Consultado el 30 de marzo de 2016.
- ↑ «Elasticsearch 2.3.3 released». Consultado el 18 de mayo de 2016.
- ↑ «Elasticsearch 2.4.0 released». Consultado el 28 de abril de 2017.
- ↑ «Elasticsearch 2.4.5 released». Consultado el 18 de mayo de 2016.
- ↑ «Elasticsearch 5.0.0-GA released». Consultado el 26 de septiembre de 2016.
- ↑ «Elasticsearch 5.0.2 released». Consultado el 29 de noviembre de 2016.
- ↑ «Elasticsearch 5.1.1 released». Consultado el 26 de septiembre de 2016.
- ↑ «Elasticsearch 5.1.2 released». Consultado el 12 de enero de 2017.
- ↑ «Elasticsearch 5.2.0 released». Consultado el 31 de enero de 2017.
- ↑ «Elasticsearch 5.2.2 released». Consultado el 28 de febrero de 2017.
- ↑ «Elasticsearch 5.3.0 released». Consultado el 28 de marzo de 2017.
- ↑ «Elasticsearch 5.3.3 released». Consultado el 1 de junio de 2017.
- ↑ «Elasticsearch 5.4.0 released». Consultado el 4 de mayo de 2017.
- ↑ «Elasticsearch 5.4.3 released». Consultado el 27 de junio de 2017.
- ↑ a b «Official Website». Elasticsearch.org. Consultado el 4 de febrero de 2014.
- ↑ «percolate at elasticsearch.org reference». Elasticsearch.org. Consultado el 4 de febrero de 2014.
- ↑ «elasticsearch Guide: Gateway». elasticsearch. Consultado el 19 de abril de 2013.
- ↑ «ElasticSearch as database». Karussell.wordpress.com. Consultado el 4 de febrero de 2014.
- ↑ «No transaction support». Elasticsearch-users.115913.n3.nabble.com. 8 de julio de 2010. Consultado el 4 de febrero de 2014.
- ↑ «Elasticsearch.org Case Studies». Elasticsearch.org. Consultado el 3 de octubre de 2014.
- ↑ Horohoe, Chad (6 de enero de 2014). «Wikimedia moving to Elasticsearch». Consultado el 21 de febrero de 2014.
- ↑ «StumbleUpon | Developer Blog». StumbleUpon.com. Consultado el 21 de febrero de 2014.
- ↑ [1]
- ↑ «ElasticSearch helps Mozilla Metrics team». Pedroalves-bi.blogspot.com. Consultado el 4 de febrero de 2014.
- ↑ «Full Text Search on Quora». Quora.com. Consultado el 4 de febrero de 2014.
- ↑ «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.
- ↑ «Oculus: The metric correlation component of Etsy's Kale system». Github.com. Consultado el 4 de febrero de 2014.
- ↑ Petar Djekic. «Architecture behind our new Search and Explore experience». Backstage.soundcloud.com. Consultado el 4 de febrero de 2014.
- ↑ «A Whole New Code Search 路 GitHub». Github.com. 23 de enero de 2013. Consultado el 21 de febrero de 2014.
- ↑ «openFDA - About the API». FDA.gov.
- ↑ «Needle in a haystack - Using Elasticsearch to run the Large Hadron Collider of CERN». medium.com.
- ↑ Craver, Nick (22 de noviembre de 2013). «What it takes to run Stack Overflow». Consultado el 2 de octubre de 2014.