首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使Logstash替换旧数据?

如何使Logstash替换旧数据?
EN

Stack Overflow用户
提问于 2018-11-28 18:00:40
回答 2查看 1K关注 0票数 1

我有甲骨文数据库。Logstash从Oracle检索数据并将其放入ElasticSearch。

但是,当Logstash每5分钟进行一次计划的导出时,ElasticSearch中充满了副本,导致旧数据仍然存在。这是一个明显的情况。在这5分钟内,甲骨文的病情几乎没有改变。假设添加2-3行,删除4-5行。

我们如何在没有副本的情况下用新的数据替换旧数据?

例如:

  1. 删除整个旧索引;
  2. 创建同名的新索引并进行相同的配置(nGram配置和映射);
  3. 添加所有新数据;
  4. 等5分钟再重复。
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-11-28 19:44:00

这很容易:为每个导入创建一个新的索引并应用映射,然后将别名切换到最近的索引。如果需要,删除旧索引。在索引最新数据时,您的当前数据始终是可搜索的。

以下是您可能需要阅读的资料来源:

  1. 在elasticsearch中搜索时,使用别名(https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-aliases.html)来指向最新的数据(使用别名总是一个好主意)。
  2. 使用滚转api (https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-rollover-index.html)为每次导入创建一个新的索引--注意这里的别名处理。
  3. 使用索引模板(https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-templates.html)自动应用新创建的索引的映射/设置。
  4. 收缩、关闭和/或删除旧索引,以保持您真正需要的群集处理数据。看看策展人(https://github.com/elastic/curator)作为独立的工具。
票数 2
EN

Stack Overflow用户

发布于 2018-11-28 20:32:54

您只需要使用每个文档的指纹/散列或每个文档中uniq字段的散列作为文档id,这样每次您都可以在适当的地方使用更新的文档覆盖相同的文档,同时添加新的文档。

但是这种方法不适用于从oracle中删除数据。

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

https://stackoverflow.com/questions/53525472

复制
相关文章

相似问题

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