ElasticSearch
Introducción
Juan Azcurra
/jazcurra
ELASTICSEARCH
▣Es un servidor de búsquedas basado en Apache Lucene.
▣Escrito en Java.
▣Multi-plataforma.
▣Enfocado en la escalabilidad.
▣Diseñado para obtener datos desde distintas fuentes,
analizarlos y realizar búsquedas a través de ellos.
ELASTICSEARCH
▣ Comunicación con el server a través de HTTP REST API.
▣ Documentos JSON schema-less (NoSQL).
▣ Búsquedas near real-time.
Principales usuarios
▣ Wikimedia
▣ Mozilla
▣ Quora
▣ Foursquare
▣ GitHub
▣ Netflix
▣ …
ELASTICSEARCH: Características
▣ Near real-time
□ ElasticSearch es un motor de búsquedas near real-time.
□ Funciona con una pequeña latencia al momento de indexar el documento previo a estar
disponible para su búsqueda.
□ La latencia es usualmente de un segundo.
▣ Cluster
□ Un clúster es una colección de nodos (servers).
□ Consiste en uno o más nodos dependiendo de la necesidad de escala.
□ Un clúster provee capacidad de indexación y búsqueda a través
□ de todos sus nodos.
ELASTICSEARCH: Características
▣ Nodo
□ Un server que es parte de un clúster.
□ Almacena información indexable.
□ Participa en las capacidades de indexación y búsquedas.
▣ Index
□ Una colección de documentos (productos, cuentas, películas).
Cada uno de los ejemplos anteriores son denominados tipos.
□ Se corresponden a una base de datos dentro de un sistema de
bases de datos relacional.
□ Identificado por un nombre en minúscula.
ELASTICSEARCH: Características
▣ Tipo
□ Representa una clase/categoría de documentos similares, ejemplo usuario.
□ Consistencia entre el nombre y el mapeo.
□ Similar a una tabla dentro de un modelo relacional.
□ Un index puede contener muchos tipos definidos, cada uno con su propio mapeo.
□ Almacenados dentro de la metada _type debido a que Lucene no tiene concepto de tipos.
▣ Mapping
□ Similar al esquema de una base de datos.
□ Describe los campos de un documento.
Incluye el tipo de datos.
Indica como debe ser indexado.
□ Mapeo dinamico indica que es opcional definir cada uno
de los campos.
ELASTICSEARCH: Características
▣ Shard
□ Los índices se subdividen en fragmentos horizontales.
□ Cada fragmento contiene todas las propiedades del documento.
□ La separación horizontal hace que los shards sean nodos independientes.
▣ Replicas
□ Una replica es una copia de un shard.
□ Provee alta disponibilidad en caso de que un shard o un nodo falle.
Una replica nunca reside en el mismo nodo que el shard original.
□ Permite escalar el volumen de búsqueda, debido a que las consultas de búsqueda pueden
ser ejecutadas en todas las replicas en paralelo.
□ Por defecto, ElasticSearch agrega 5 shards primarios y 1
replica para cada index.
ELASTICSEARCH: CRUD
▣ Crear contenido
□ Se refiere a la acción de indexar
□ Crear una película:
curl –XPUT ‘localhost:9200/movies/movie/1’ –d
ELASTICSEARCH: CRUD
▣ Obtener contenido
□ Obtener una película:
curl –XGET ‘localhost:9200/movies/movie/1’ –d
▣ Actualizar contenido
□ Modificar una película:
curl –XPUT ‘localhost:9200/movies/movie/1/_update’ –d {
“doc”: {“year”:1975 }
}
▣ Eliminar contenido
□ Eliminar una película:
curl –XDELETE ‘localhost:9200/movies/movie/1’

Elasticsearch

  • 1.
  • 2.
    ELASTICSEARCH ▣Es un servidorde búsquedas basado en Apache Lucene. ▣Escrito en Java. ▣Multi-plataforma. ▣Enfocado en la escalabilidad. ▣Diseñado para obtener datos desde distintas fuentes, analizarlos y realizar búsquedas a través de ellos.
  • 3.
    ELASTICSEARCH ▣ Comunicación conel server a través de HTTP REST API. ▣ Documentos JSON schema-less (NoSQL). ▣ Búsquedas near real-time.
  • 4.
    Principales usuarios ▣ Wikimedia ▣Mozilla ▣ Quora ▣ Foursquare ▣ GitHub ▣ Netflix ▣ …
  • 5.
    ELASTICSEARCH: Características ▣ Nearreal-time □ ElasticSearch es un motor de búsquedas near real-time. □ Funciona con una pequeña latencia al momento de indexar el documento previo a estar disponible para su búsqueda. □ La latencia es usualmente de un segundo. ▣ Cluster □ Un clúster es una colección de nodos (servers). □ Consiste en uno o más nodos dependiendo de la necesidad de escala. □ Un clúster provee capacidad de indexación y búsqueda a través □ de todos sus nodos.
  • 6.
    ELASTICSEARCH: Características ▣ Nodo □Un server que es parte de un clúster. □ Almacena información indexable. □ Participa en las capacidades de indexación y búsquedas. ▣ Index □ Una colección de documentos (productos, cuentas, películas). Cada uno de los ejemplos anteriores son denominados tipos. □ Se corresponden a una base de datos dentro de un sistema de bases de datos relacional. □ Identificado por un nombre en minúscula.
  • 7.
    ELASTICSEARCH: Características ▣ Tipo □Representa una clase/categoría de documentos similares, ejemplo usuario. □ Consistencia entre el nombre y el mapeo. □ Similar a una tabla dentro de un modelo relacional. □ Un index puede contener muchos tipos definidos, cada uno con su propio mapeo. □ Almacenados dentro de la metada _type debido a que Lucene no tiene concepto de tipos. ▣ Mapping □ Similar al esquema de una base de datos. □ Describe los campos de un documento. Incluye el tipo de datos. Indica como debe ser indexado. □ Mapeo dinamico indica que es opcional definir cada uno de los campos.
  • 8.
    ELASTICSEARCH: Características ▣ Shard □Los índices se subdividen en fragmentos horizontales. □ Cada fragmento contiene todas las propiedades del documento. □ La separación horizontal hace que los shards sean nodos independientes. ▣ Replicas □ Una replica es una copia de un shard. □ Provee alta disponibilidad en caso de que un shard o un nodo falle. Una replica nunca reside en el mismo nodo que el shard original. □ Permite escalar el volumen de búsqueda, debido a que las consultas de búsqueda pueden ser ejecutadas en todas las replicas en paralelo. □ Por defecto, ElasticSearch agrega 5 shards primarios y 1 replica para cada index.
  • 9.
    ELASTICSEARCH: CRUD ▣ Crearcontenido □ Se refiere a la acción de indexar □ Crear una película: curl –XPUT ‘localhost:9200/movies/movie/1’ –d
  • 10.
    ELASTICSEARCH: CRUD ▣ Obtenercontenido □ Obtener una película: curl –XGET ‘localhost:9200/movies/movie/1’ –d ▣ Actualizar contenido □ Modificar una película: curl –XPUT ‘localhost:9200/movies/movie/1/_update’ –d { “doc”: {“year”:1975 } } ▣ Eliminar contenido □ Eliminar una película: curl –XDELETE ‘localhost:9200/movies/movie/1’