2015-03-15 3 views
0

У меня есть вопрос о TTL в elasticsearch мойки апача желобаFlume + ElasticSearch Раковина TTL

Я работаю на упругом поиска + интеграции водопропускной. Я использую elasticsearch версии 1.4.1 и водовода версии 1.5.2 Оба работают локально на моей машине

В Flume Мой ElasticSearch Раковина сконфигурирован следующим образом:

agent.sinks.elasticSearchSink.type = org.apache.flume.sink.elasticsearch.ElasticSearchSink 
agent.sinks.elasticSearchSink.channel = fileChannel 
agent.sinks.elasticSearchSink.hostNames=localhost:9300 
agent.sinks.elasticSearchSink.indexName=platform 
agent.sinks.elasticSearchSink.indexType=platformtype 
agent.sinks.elasticSearchSink.ttl=1m 
agent.sinks.elasticSearchSink.batchSize=1000 
agent.sinks.elasticSearchSink.serializer=org.apache.flume.sink.elasticsearch.ElasticSearchLogStashEventSerializer 

Обратите внимание, есть ttl 1 м (1 минута) для испытания.

Я вижу, что события добавляются в ES, но не удаляются через минуту. Запрос "mapping" также не показывает, что есть TTL. Я знаю, что TTL по умолчанию отключена, так что я могу включить его так:

>> PUT: http://localhost:9200/_all/platformtype/_mapping 
with body: 
{"platformtype" : {"_ttl" : {"enabled" : true, "default" : "2m"}}} 

Обратите внимание, что в настоящее время его 2 минуты TTL (только по-другому с определениями моек)

Итак, теперь, если я добавлю другие события, они будут удалены через 1 минуту ...

Так может кто-то пролить свет, как именно это должно работать? Это ошибка, или мне нужно вручную включить TTL?

Благодаря

ответ

1

Ну, Оказалось, что она работает так: ТТЛ должен быть включен с помощью отображения API в elasticsearch. Если это не сделано, TTL, отправленный из Flume, просто игнорируется.

Теперь ТТЛ включается на уровне elasticsearch с представленными определениями работают следующим образом:

«„PlatformType“Index будет иметь TTL со значением по умолчанию 2 минуты Таким образом, если я отключить TTL. на уровне потока, сообщения будут удалены через 2 минуты (TTL не указывается в событии, отправленном из лотка, поэтому значение по умолчанию входит в игру).

В качестве альтернативы, если имеется явное значение TTL, предоставленное flule, он будет иметь приоритет над определением TTL по умолчанию, поэтому в этом случае соответствующая запись будет удалена действительно через 1 минуту, как я уже упоминал.

Надеюсь, это поможет кому-то. Спасибо, вопрос закрыт :)