elasticsearch 日志存储替换旧索引
我正在使用logstash创建一个弹性索引。这些步骤是: 1.logstash启动 2.使用jdbc输入插件检索数据 3.数据通过elasticsearch输出插件进行索引(模板包含别名) 4.停车场 当时,我有一个索引调用myindex-1,可以用别名myindex请求它。 第二次,我得到了一个索引调用myindex-2,可以用别名myindex请求它。第一个索引现在已弃用,我需要在步骤4之前(或之后)删除它elasticsearch 日志存储替换旧索引,elasticsearch,command-line,logstash,alias,elasticsearch,Command Line,Logstash,Alias,我正在使用logstash创建一个弹性索引。这些步骤是: 1.logstash启动 2.使用jdbc输入插件检索数据 3.数据通过elasticsearch输出插件进行索引(模板包含别名) 4.停车场 当时,我有一个索引调用myindex-1,可以用别名myindex请求它。 第二次,我得到了一个索引调用myindex-2,可以用别名myindex请求它。第一个索引现在已弃用,我需要在步骤4之前(或之后)删除它 您知道如何做到这一点吗?首先,如果您知道不推荐使用的索引名称,那么只需添加步骤5:
您知道如何做到这一点吗?首先,如果您知道不推荐使用的索引名称,那么只需添加步骤5:
curl -XDELETE 'http://localhost:9200/myindex-1'
因此,您可以使用这个附加步骤将您的logstash运行包装到脚本中-据我所知,logstash没有删除索引的选项,这根本不是它的目的
但是从您描述您的情况的方式来看,似乎您正在尝试在创建新索引期间保持数据可用,您能详细介绍一下您的用例吗
问这个问题的原因是,使用当前的过程,在索引期间,您可能会得到重复的数据(旧版本和新版本)
如果确实需要刷新数据,并假设从数据库检索的数据中有id,
您可能会考虑另一种方法:在LogSTASH中配置2个弹性搜索输出,
第一个操作设置为“删除”,目标是上一个索引中的旧条目,
第二个是您的标准创建到新索引中
根据数据的性质,可能还有其他可能性
POST /_aliases
{
"actions" : [
{ "remove" : { "index" : "myindex-1", "alias" : "myindex" } },
{ "add" : { "index" : "myindex-2", "alias" : "myindex" } }
]
}
文档没错:我希望在创建新索引期间保持数据可用。您的解决方案有两个输出,但并不完全完美。通过示例:该表包含两行:1和2。因此,第一个索引包含这两行。然后删除第1行。第一个输出只删除第二行,而不是第一行(因为在数据库中不再删除)。我认为您不会找到完美的解决方案。但是关于我的建议,你仍然保留旧的索引删除。“最佳”解决方案将取决于许多因素,包括:创建新索引需要多长时间,过渡期间结果中重复项对最终用户的影响,是否有保留数据历史记录的价值(在这种情况下,我的建议非常糟糕)。。。