我使用logstash创建弹性索引。步骤是: logstash开始 2.使用jdbc输入插件检索数据 3.数据使用elasticsearch输出插件编制索引(模板包含别名) 4. logstash stop
时间,我有一个索引调用myindex-1,可以使用别名myindex来请求。 第二次,我有一个索引调用myindex-2,可以使用别名myindex来请求。第一个索引现已弃用,我需要在它之前(或在步骤4之后)删除它。
你知道怎么做吗?
答案 0 :(得分:0)
首先,如果您知道已弃用的索引名称,那么只需添加第5步:
curl -XDELETE 'http://localhost:9200/myindex-1'
因此,您将使用此附加步骤将您的logstash运行包装到脚本中 - 据我所知,logstash没有删除索引的选项,这根本不是它的用途。
但是从您描述您的情况的方式来看,您似乎在尝试在新索引创建过程中保持数据可用,您能否详细说明一下您的用例?
询问的原因是,使用当前程序,您可能会在索引期间最终获得重复数据(旧版和新版)。
如果确实需要刷新数据,并假设您在从DB检索的数据中有id, 您可以考虑另一种方法:在logstash中配置2个elasticsearch输出, 第一个操作设置为“删除”,以前一个索引中的旧条目为目标, 第二个是你的标准创建新索引。
根据数据的性质,可能还有其他可能性。
答案 1 :(得分:0)
REST请求第二步:
POST /_aliases
{
"actions" : [
{ "remove" : { "index" : "myindex-1", "alias" : "myindex" } },
{ "add" : { "index" : "myindex-2", "alias" : "myindex" } }
]
}
文档here