ELK: elasticsearch (API y DSLQuery)
- API = Application Programming Interface. Capa abstracción funciones ofrecidas por la apliación
Cluster APIs
- Health:GET _cluster/health?pretty- status- green: todos los shard bien
- yellow: no están bien las réplicas
- red: shard primario no indexado
 
 
- Stats:GET _cluster/stats?human&pretty- estadísticas del cluster (número de shards, almacenamiento, uso de memoria)
- información sobre los nodos (cantidad, roles, os, JVM, memoria, cpu, plugins)
 
- Info:GET _nodes?pretty→curl -XGET <IP>/_nodes- Información de todos los nodos del cluster.
- GET _nodes/nodeId1- información concreta de uno de los nodos
 
- nombre de host, puerto http, IP, OS, procesos, plugins…
 
Documents APIs
- Index:- añade o actualiza un documento específico
- curl -XPUT "localhost:9200/twitter/tweet/1?pretty" -H "Content-Type: application/json" -d" { "user":"openwebinars", "post_date": "2009-11-15T14:12:12" "message": "pruebaq en Elasticsearch" }"
- bdd: twitter
- documento: 1
- formato: json
 
- Get:- permite consultar documentos JSON de un índice con su ID
- curl -XGET 'localhost:9200/twitter/tweet/1?pretty' 
 
- Delete:- eliminar documentos con su ID
- curl -XDELETE 'http://localhost:9200/twitter/tweet/6?pretty 
 
- Update:- actualiza la información de un documento. Consulta, actualiza y vuelve a indexar
- curl -XPOST 'localhost:9200/twitter/tweet/5/_update?pretty' -H 'Content-Type: application/json' -d' { "script": "ctx._source.new_field='valor nuevo campo' " }'
 
Search APIs
- URI:- en la propia consulta:curl -XGET 'localhost:9200/twitter/tweet/_search?q=user:openwebinars&pretty' 
- curl -XGET 'localhost:9200/twitter/tweet/_search?q=new_field:valor nuevo campo&pretty' 
- cuerpo completo:curl -XGET 'localhost:9200/twitter/tweet/_search?pretty' -H 'Content-Type: application/json' -d' { "query": { "term":{"user":"user1"} } }'
 
- Templates:- plantillas para búsquedas repetidas y complejas, cambiando parámetros
- curl -XGET 'localhost:9200/_search/template?pretty' -H 'Content-Type: application/json' -d’ { "inline" : { "query": { "match" : { "{{my_field}}" : "{{my_value}}" } }, "size" : "{{my_size}}" }, "params" : { "my_field" : "user", "my_value" : "openwebinars", "my_size" : 1 } } '
 
- Shards API- devuelve los índices y shards sobre los que se ejecutará la búsqueda. No hace la búsqueda en sí.
- útil para búsqueda de errores u optimización de rendimiento
- curl -XGET 'localhost:9200/twitter/_serach_shards?pretty' 
 
Index APIs
- Create: se pueden crear múltiples índices, incluyendo operaciones
- curl -XPUT 'localhost:9200/new_index?pretty' -H 'ContentType: application/json' -d' { "settings" : { "index" : { "number_of_shards" : 3, "number_of_replicas" : 2 } } }'- new_index
 
- Delete:
- curl -XDELETE 'localhost:9200/new_index?pretty' - ojo con parámetros _all o *
- parámetro action.destructive_requires_name:true para proteger borrados totales accidentales
 
- Open/Close- un índice cerrado no sobrecarga el cluster
- curl -XPOST 'localhost:9200/new_index/_close?pretty' curl -XPOST 'localhost:9200/new_index/_open?pretty' 
 
- Mapping:- devuelve el mapping que se está realizando sobre un índice
- curl -XGET ‘localhost:9200/twitter/_mapping/tweet?pretty' 
- se obtiene información sobre los campos.
- el mapping hace un mapeo de los campos para declararlos y posteriormente poder acceder de una manera más organizada a la información: txt, fecha, número…
 
- Stats:- estadísticas de los índices de diferentes operaciones
- curl -XGET 'localhost:9200/_stats?pretty' 
- cantidad de documentos, almacenamiento, segmentos… (monitorización)
 
query DSL
- usar JSON para definir consultas DSL (Lenguaje de Dominio Específico)
- query context: calcula un _score que representa cómo de bien un documento hace match con la consulta en comparación con el resto (incluso podemos decirle que porcentaje de score permitimos)- match all: score 1.0 (100%)curl -XGET 'localhost:9200/twitter/_search?pretty' - H 'Content-Type: application/json' -d' { "query": { "match_all": {} } }'
- match:curl -XGET 'localhost:9200/twitter/_search?pretty' - H 'Content-Type: application/json' -d' { "query": { "match" : { "user" : "user2" } } } '
- regexp:- permite usar expresiones regulares. regexp pesadas pueden provocar un gran consumo de recursos
- curl -XGET 'localhost:9200/twitter/_search?pretty' -H 'Content-Type: application/json' -d' { "query": { "regexp":{ "user": "user.*" } } } '
 
 
- filter context: Solo sí o no coíncide con la consulta- filtros usados a menudo se cachean para mejorar rendimiento