如何在elasticsearch中设置全局_ttl

时间:2014-03-14 06:55:33

标签: elasticsearch

在我的设置中,我有一个中央系统日志服务器,它通过td-agent(流利的)将所有日志转发到具有elasticsearch的节点。我将在最后发布配置。

现在,一切运行良好,我可以搜索日志,我能够创建一个弹性搜索节点集群等等。我现在需要的是设置所有包含文件的_ttl。我希望它们在30天后删除。

我试过

curl -XPUT 'http://172.19.19.225:9200/fluentd' -d '{ "tweet" : { "_ttl" : { "enabled" : true, "default" : "2h" }}}'

(是的,我是那么愚蠢,我在那里发了推文),但当然它没有用,现在每一次尝试都给了我

{"error":"IndexAlreadyExistsException[[fluentd] already exists]","status":400}

我不知道该怎么做了。

我对所有解决方案持开放态度,谢谢^^

/etc/td-agent/td-agent.conf:

<source> #Input plugins are defined be <source>...</source> statements
  type syslog #This is the Syslog input plugin, which we will use later in this tutorial
  port 42185
  tag es.syslog
</source>

#<source>
#  type http #This is the HTTP input plugin, which turns Fluentd into an HTTP endpoint
#  port 8888 #Send data to http://localhost:8888/<Fluentd tag>?json=<json event>
#</source>

<match es.**>
  type copy
  <store>
    type elasticsearch
    logstash_format true
    index_name fluentd
    type_name fluentd
    flush_interval 3 # For testing
    host localhost
    port 9200
  </store>
#  <store>
#    type stdout
#  </store>
</match>

弹性搜索处于默认配置。带索引的目录如下所示: ls / var / lib / elasticsearch / elasticsearch / nodes / 0 / indices:

fluentd          logstash-2014.02.13  logstash-2014.02.16  logstash-2014.02.19  logstash-2014.02.22  logstash-2014.02.25  logstash-2014.02.28  logstash-2014.03.03  logstash-2014.03.06  logstash-2014.03.09  logstash-2014.03.12
kibana-int       logstash-2014.02.14  logstash-2014.02.17  logstash-2014.02.20  logstash-2014.02.23  logstash-2014.02.26  logstash-2014.03.01  logstash-2014.03.04  logstash-2014.03.07  logstash-2014.03.10  logstash-2014.03.13
logstash-2014.02.12  logstash-2014.02.15  logstash-2014.02.18  logstash-2014.02.21  logstash-2014.02.24  logstash-2014.02.27  logstash-2014.03.02  logstash-2014.03.05  logstash-2014.03.08  logstash-2014.03.11  logstash-2014.03.14

1 个答案:

答案 0 :(得分:2)

首先关闭索引:

      $ curl -X POST 'http://172.19.19.225:9200/fluentd/_close'

更新设置

      $ curl -X PUT 'http://172.19.19.225:9200/thegame/_settings' -d \
     '{ "tweet" : { "_ttl" : { "enabled" : true, "default" : "30d" }}}'

如果它再次抛出错误。然后你需要删除索引并重新创建ttl值为30d的索引

删除索引

      $ curl -X DELETE 'http://172.19.19.225:9200/fluentd/'

创建索引

      $ curl -X PUT 'http://172.19.19.225:9200/thegame'

更新地图

      $ curl -X PUT 'http://172.19.19.225:9200/thegame/_settings' -d \
      '{ "tweet" : { "_ttl" : { "enabled" : true, "default" : "30d" }}}'

它有帮助......!