Запрос 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"