首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >水槽+ ElasticSearch Sink TTL

水槽+ ElasticSearch Sink TTL
EN

Stack Overflow用户
提问于 2015-03-15 17:00:52
回答 1查看 1K关注 0票数 0

我有一个关于apache水槽elasticsearch水槽中的TTL的问题

我做过弹性搜索+水槽整合。我使用的是elasticsearch版本1.4.1和flume版本1.5.2,它们都在我的机器上本地运行

在水槽中,我的ElasticSearch Sink配置如下:

代码语言:javascript
复制
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

注意,为了测试,有一个1m (1分钟)的ttl。

我看到事件被添加到ES中,但一分钟后不会被删除。“映射”查询也没有显示存在TTL。我知道默认情况下TTL是禁用的,所以我可以这样启用它:

代码语言:javascript
复制
>> PUT: http://localhost:9200/_all/platformtype/_mapping
with body:
{"platformtype" : {"_ttl" : {"enabled" : true, "default" : "2m"}}}

注意,现在它只有2分钟的TTL (只是与接收器定义不同)。

所以,如果我在1分钟后添加其他事件,它们就会被删除.

有人能弄清楚这到底是怎么回事吗?是bug还是我必须手动启用TTL?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-10 14:03:49

它的工作方式是这样的: TTL必须通过elasticsearch中的映射API来启用。如果没有完成,从水槽发送的TTL就会被忽略。

现在,在elasticsearch级别启用了TTL,提供的定义如下所示:

“索引'platformtype‘将有默认值为2分钟的TTL。因此,如果我在水槽级别禁用TTL,消息将在2分钟内被删除( TTL在从flume发送的事件中没有指定,因此默认值开始发挥作用)。

或者,如果flume提供了一个显式的TTL值,它将优先于默认的TTL定义,因此在这种情况下,相应的记录实际上将在1分钟内被删除。

希望这对某人有帮助。谢谢,问题结束了:)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29063505

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档