2015-06-24 4 views
4

Я использую logstash кормить ежедневные показатели прокатки в elasticsearch, что-то вроде этогоElasticsearch ежемесячно прокатные показатели

output { 

     elasticsearch { 

       .... 
       index: myindex-%{+YYYY.MM.DD} 
     } 
    } 

Теперь выясняется, что нужно использовать ежемесячно прокатки индексов вместо этого, после того, как смотреть на http://logstash.net/docs/1.4.1/outputs/elasticsearch.html#index

Но я все еще чувствую смущение, поэтому ответ так же просто, как использовать myindex-%{+YYYY.MM}, а индекс будет катиться в конце каждого месяца?

Update: Вот примеры «же» событие (то есть же _id поле) индексируется на два разных дня

на день, это индексируется

{_id: 123, message: "old message} 

на следующий день B, это индексируется

{_id: 123, message: "updated message} 

так, если день и день B принадлежит к двум отдельным показателям, у меня будет 2 события, если мой запрос оглядки все эти индексы. Чтобы устранить дублирование, при индексировании события B, я сделаю дополнительную проверку запросов с помощью _id и удалит ранее существующее событие A, а затем проиндексирую на B. если это ежедневные индексы, со временем я боюсь, что мой запрос на поиск _id будет быть дороже, что ежемесячно может улучшиться. И последнее, но не менее важное: если событие, найденное из моего чека, существует в текущем индексе (с сегодняшнего дня до этого месяца), оно не удалит событие, но позволит elasticsearch сделать update на основе _id (по сути, это удаление/создание, просто мне не нужно делать это в моем коде)

Благодаря

+2

Да, это так просто. –

+0

Спасибо Jettro, я смог протестировать с изменением системного времени и времени между индексацией 2 события и увидеть 2 создаваемых индекса. –

+0

Мне любопытно ... почему «нужно» использовать месячные индексы? –

ответ

4

что происходит с конфигой вы предоставляете, что отметка времени события берется. Если у вас нет дополнительной конфигурации, время, в течение которого событие было получено с помощью логарифма журнала, выполняется. Однако часто бывает полезно взять временную метку, которая находится внутри самого события. Чем эта метка времени используется. Ниже некоторый пример кода, который я часто использую.

filter { 
    date { 
     match => ["timestamp" , "dd/MMM/yyyy:HH:mm:ss Z"] 
    } 
} 
output { 
    elasticsearch { 
    protocal => "transport" 
    host => "localhost:9300" 
    cluster => "mycluster" 
    index => "gridshore-logs-%{+YYYY.MM}" 
    } 
} 
+0

Что касается Jettro, мы используем Kibana как фронт, где мы обычно устанавливаем поле timestamp, которое мы хотим использовать, поэтому он может использовать индексированный статический индекс '@ timestamp', но на панели инструментов мы можем использовать' ourtimestamp' в конфигурациях индексов - вы можете сделать то же самое и с гистограммами и таблицами. все еще хорошо делать, как вы предполагали. –

+0

Синтаксическая ошибка: 'index =>" gridshore-logs -% {+ YYYY.MM} '=>' index => "gridshore-logs -% {+ YYYY.MM}" ' – Aistis

Смежные вопросы