Logstash替换旧索引

时间:2016-12-23 10:45:39

标签: elasticsearch command-line logstash alias

我使用logstash创建弹性索引。步骤是:  logstash开始  2.使用jdbc输入插件检索数据  3.数据使用elasticsearch输出插件编制索引(模板包含别名)  4. logstash stop

时间,我有一个索引调用myindex-1,可以使用别名myindex来请求。 第二次,我有一个索引调用myindex-2,可以使用别名myindex来请求。第一个索引现已弃用,我需要在它之前(或在步骤4之后)删除它。

你知道怎么做吗?

2 个答案:

答案 0 :(得分:0)

首先,如果您知道已弃用的索引名称,那么只需添加第5步:

curl -XDELETE 'http://localhost:9200/myindex-1'

因此,您将使用此附加步骤将您的logstash运行包装到脚本中 - 据我所知,logstash没有删除索引的选项,这根本不是它的用途。

但是从您描述您的情况的方式来看,您似乎在尝试在新索引创建过程中保持数据可用,您能否详细说明一下您的用例?

询问的原因是,使用当前程序,您可能会在索引期间最终获得重复数据(旧版和新版)。

如果确实需要刷新数据,并假设您在从DB检索的数据中有id, 您可以考虑另一种方法:在logstash中配置2个elasticsearch输出, 第一个操作设置为“删除”,以前一个索引中的旧条目为目标, 第二个是你的标准创建新索引。

根据数据的性质,可能还有其他可能性。

答案 1 :(得分:0)

  1. 创建并填充myindex-2,请不要为其添加别名
  2. 同时将别名添加到myindex-2并将其从myalias-1中删除

REST请求第二步:

POST /_aliases
{
    "actions" : [
        { "remove" : { "index" : "myindex-1", "alias" : "myindex" } },
        { "add"    : { "index" : "myindex-2", "alias" : "myindex" } }
    ]
}

文档here