Я пытаюсь построить запрос elasticsearch, чтобы возвращать документы для времени между полуночью и текущим временем дня для всех дат. Например, если я запустил запрос в 09:00:00, запрос вернет любой документ с отметкой времени между полуночью и 09:00:00, независимо от даты.elasticsearch: getMinuteOfDay() применяется к time() в диапазоне диапазона дат
Вот пример набора данных:
curl -XPUT localhost:9200/test/dt/_mapping -d '{"dt" : {"properties" : {"created_at" : {"type" : "date", "format": "YYYY-MM-DD HH:mm:ss" }}}}'
curl -XPOST localhost:9200/test/dt/1 -d '{ "created_at": "2014-10-09 07:00:00" }'
curl -XPOST localhost:9200/test/dt/2 -d '{ "created_at": "2014-10-09 14:00:00" }'
curl -XPOST localhost:9200/test/dt/3 -d '{ "created_at": "2014-10-08 08:00:00" }'
curl -XPOST localhost:9200/test/dt/4 -d '{ "created_at": "2014-10-08 15:00:00" }'
curl -XPOST localhost:9200/test/dt/5 -d '{ "created_at": "2014-10-07 09:00:00" }'
curl -XPOST localhost:9200/test/dt/6 -d '{ "created_at": "2014-10-07 16:00:00" }'
и пример фильтра:
curl -XPOST localhost:9200/test/dt/_search?pretty -d '{
"query": {
"filtered" : {
"filter" : {
"bool": {
"must": [
{
"script" : {
"script" : "doc[\"created_at\"].date.getMinuteOfDay() < 600"
}
}
]
}
}
}
}
}'
, где 600 представляет собой статический параметр, который я хочу заменить динамический параметр минут в зависимости от времени суток когда запрос выполняется.
Моя лучшая попытка - использовать метод getMinuteOfDay() для фильтрации каждого документа, но моя проблема заключается в том, как получить getMinuteOfDay() для текущего времени. Я попробовал варианты с использованием time() вместо жестко заданного параметра 600 в вышеуказанном запросе, но не могу понять это.
Любые идеи?