Uso ElasticSearch vía API

 Esta guía busca orientar los pasos de cómo realizar la inserción de logs hacia nuestra API Elasticsearch desde cualquier aplicación.

En el enlace podemos encontrar la colección de Postman que contiene una query usada para mostrar, a manera de ejemplo, la forma como se puede utilizar la API de Elasticsearch y poder alimentar un índice mediante el envío de logs por lote. 

https://www.getpostman.com/collections/951c87ec5c7364af32c7  


Dicho ejemplo tiene las siguientes características:

  • Tipo:  POST
  • URL:  http://ifacturacolombia.cloudapp.net:9200/_bulk 
  • Tipo de autenticación:  Basic.
  • Nombre de usuario y contraseña suministrados por el administrador del sistema.
  • Body:  raw de tipo application/json
  • Siempre finalizar con cambio de linea

Ejemplo de un único registro:

                  { "index" : { "_index":"project-environment-applicationname","_type":"logEvent" }}
                
                  {"timeStamp":"2018-03-12T23:09:45.5864254Z","message":"Something broke 1.","messageObject":{},"exception":{"Type":"System.Exception","Message":"There was a system error","HelpLink":null,"Source":null,"HResult":-2146233088,"StackTrace":null,"Data":{"CustomProperty":"CustomPropertyValue","SystemUserID":"User43"},"InnerException":null},"loggerName":"ES.Example.Program","domain":"ES.Example.vshost.exe","identity":"","level":"ERROR","className":"ES.Example.Program","fileName":"C:\\Users\\transfiriendo\\projects\\ES.Example\\ES.Example\\Program.cs","lineNumber":"26","fullInfo":"ES.Example.Program.Main(C:\\Users\\transfiriendo\\projects\\ES.Example\\ES.Example\\Program.cs:26)","methodName":"Main","fix":"LocationInfo, UserName, Identity, Partial","properties":{"Identity":"","UserName":"TransfiriendoUser","HostName":"local","@timestamp":"2016-02-12T20:11:41.5864254Z"},"userName":"TransfiriendoUser","threadName":"9","hostName":"local"}
                  
                    


  • El id es asignado automáticamente por Elasticsearch. En caso de enviarlo, siempre debe ser único.
  • El ejemplo anterior debe tener el mismo formato en cada log que se quiera insertar.
  • Se recomienda hacer inserción por lotes y así evitar saturación en los canales de comunicación.

El JSON anterior se puede analizar mejor en la siguiente imagen

Resultado en elasticsearch luego de ejecutar la query mencionada:

Fin.