Запрос ElasticSearch с указанием имени индекса с использованием текущей даты

Я использую logstash для наполнения ES несколькими метриками из наших сервисов на разных машинах. Logstash создает новый индекс каждый день, и я обнаружил, что запрос ES без указания индекса выполняется медленно. (я в настоящее время поддерживаю 5 дней указаний). Если я укажу конкретный индекс, например, сегодня

.es(index=logstash-2018.01.15, q= examplequery

он работает очень быстро. Есть ли способ, которым я могу указать сегодняшний индекс, используя поле даты?

например

.es(index=logstash-'get date', q= examplequery

2 ответа

Решение

Вы можете использовать запрос для получения показателей сегодняшней даты:

 .es(index='<logstash-{now/d}>')

Интересное чтение со всеми опциями, доступными в упругом поиске, для включения математики даты в имена индексов:

https://www.elastic.co/guide/en/elasticsearch/reference/current/date-math-index-names.html

Глядя на синтаксис, я предполагаю, что вы используете Timelion или что-то, что использует строку запроса. Здесь есть хорошее руководство, которое включает в себя указание шаблонов индексов:
https://www.elastic.co/blog/timelion-tutorial-from-zero-to-hero
В вашем случае это будет

.es(index=logstash-*, q= examplequery

или же

.es(index=logstash-2018.01.*, q= examplequery

если вам нужен январь этого года, а индекс будет "logstash-YYYY.MM.dd"

Другие вопросы по тегам