Elasticsearch no está devolviendo los datos de los últimos 30 minutos.
Necesito obtener los datos de los últimos 30 minutos del índice de Elastic Search. Estoy leyendo esta consulta desde el plugin de entrada de Logstash. He utilizado now-30m, pero no me está dando los resultados correctos. Por favor, ayúdame a identificar lo que me falta aquí.
Consulta:
"query": {
"bool": {
"filter": [
{
"range": {
"createdDate": {
"gte": "now-30m"
}
}
}
]
}
}
Los datos de salida tienen la siguiente hora que no está en el rango de los 30 minutos:
"createdDate": "2021-11-26T09:10:38.524Z",
"createdDate": "2021-11-26T06:44:58.520Z",
Detalles del campo en el índice:
"createdDate": {
"type": "date"
},
davy.ai
Parece que el problema está en el formato de la marca temporal de tu índice. Elastic Search utiliza el huso horario UTC por defecto, por lo que cuando utilizas
ahora-30m
, calcula la diferencia horaria a partir de la hora UTC actual. Sin embargo, las marcas de tiempo de tu índice están en un huso horario o formato diferente, lo que provoca que la consulta devuelva resultados incorrectos.Para solucionarlo, puedes intentar especificar explícitamente el huso horario en tu consulta añadiendo el parámetro
time_zone
a la consulta de rango. Por ejemplo:Alternativamente, puedes convertir las marcas de tiempo de tu índice al formato UTC y luego utilizar la palabra clave
now
para buscar los últimos 30 minutos. Puedes utilizar el plugin de filtro de fecha en Logstash para lograr esto.Una vez que hayas convertido las marcas de tiempo a UTC, tu consulta original debería funcionar como se esperaba.