Elasticsearch Parte I - Conocimientos básicos

Introducción elasticsearch

Hay algunos conceptos que son fundamentales para Elasticsearch. Comprender estos conceptos desde el principio ayudará enormemente a facilitar el proceso de aprendizaje.

arquitectura:

Elasticsearch > Índices > Types > Documents > Fields

nodo

Un nodo es un servidor que forma parte del clúster, almacena los datos, y participa en las capacidades de indexación y búsqueda del cluster.

índice

Un índice es una colección de documentos que tienen características algo similares.

tipo

Dentro de un índice, se pueden seleccionar uno o más tipos. Un tipo es una categoría / partición lógica de su índice de cuya semántica es totalmente suya. En general, un tipo se define para documentos con un conjunto de campos comunes.

documento

Un documento es una unidad básica de información que puede ser indexado. Este documento se expresa en JSON (JavaScript Object Notation), que es un formato de intercambio de datos de Internet ubicua.

shard y réplicas

Un índice puede almacenar una gran cantidad de datos que puede exceder los límites de hardware de un solo nodo.

Para resolver este problema, Elasticsearch ofrece la posibilidad de subdividir el índice en varios trozos llamados fragmentos. Cuando se crea un índice, sólo tiene que definir el número de fragmentos que desee. Cada fragmento es en sí mismo un “índice” totalmente funcional e independiente que se puede alojar en cualquier nodo del clúster.

Sharding es importante por dos razones principales:

La replicación es importante por dos razones principales:

Vamos a empezar con un chequeo, para comprobar el estado del clúster, vamos a utilizar la _catAPI

Añadimos pretty final de la llamada para indicarle que debe bastante-imprimir la respuesta JSON (si lo hay).

ES agrega su propia metadata:

_id
_type
_source
_all
_timesstamp
_ttl
_size

Respuesta

201 created, se creo un nuevo documento 200 se actualizo 404 not found

{
"ok" : true,  
"_index" :
"_type" :
"_id" : 
"_version" :
}
curl -XGET 'search-es:9200/_cat/health?v&pretty'
curl -XGET 'search-es:9200/_cat/health?v&pretty'
epoch      timestamp cluster       status node.total node.data shards pri relo init unassign pending_tasks
1482455962 01:19:22  elasticsearch yellow          1         1     10  10    0    0       10             0

Obtener nodos

curl -XGET 'search-es:9200/_cat/nodos?v&pretty'

Obtener indices

curl -XGET 'search-es:9200/_cat/indices?v&pretty'
curl -XGET 'search-es:9200/_cat/indices?v&pretty'
health status index    pri rep docs.count docs.deleted store.size pri.store.size
yellow open   article    5   1          1            0      3.1kb          3.1kb
yellow open   products   5   1          1            0        3kb            3kb

CRUD

Crear documento:

Al indexar, la parte ID es opcional. Si no se especifica, Elasticsearch generará un ID aleatorio y luego utilizarlo para indexar el documento. El actual ID Elasticsearch genera (o lo que sea que se especifica explícitamente en los ejemplos anteriores).

curl -XPOST "search-es:9200/article/news/1" -d '{ "title" : "Ejemplo titulo" }'

or

curl -XPOST 'search-es:9200/article/news?' -d '{ "title" : "Jane Doe" }'

Obtener documento por id

curl -XGET 'search-es:9200/article/news/1'

Borrar documento por ID

curl -XDELETE 'search-es:9200/documents_development'

Actualizar documento

curl -XPOST 'localhost:9200/article/news/1/_update?' -d'
{
  "doc": { "title": "Jane Doe" }
}'

Buscar documento por texto

curl -XGET 'search-es:9200/article/_search?p=Ejemplo'