【问题标题】:Deleting old entries in Elasticsearch删除 Elasticsearch 中的旧条目
【发布时间】:2018-02-10 20:31:46
【问题描述】:

我将在一天中的不同随机时间对数据进行“抓取”,并将其输入 Elasticsearch。这一点工作得很好。

但是,索引应该只反映在我最近一次爬网中找到的内容,我目前没有任何内容可以删除 Elasticsearch 索引中的内容,这些内容是上一次爬网留下的,但在新爬网中没有找到。

据我所知,我有几个选择:

A) 根据项目的年龄删除项目。不起作用,因为索引时间是随机的。

B) 删除整个索引并提供新数据。似乎效率不高,并且会给我留出空索引或部分索引的时间。

C) 执行插入/修改查询,如果未找到插入,如果已在索引中找到更新时间戳,则执行第二次传递以删除任何具有较旧时间戳的项目。

D) 更好的东西。

在这种情况下删除旧内容的合乎逻辑且有效的方法是什么?

【问题讨论】:

    标签: search elasticsearch


    【解决方案1】:

    如果我了解您想要做什么,并且您确定每次爬取都包含完整的数据集,我会这样做:

    • 爬入基于时间的索引:you index-201504051656
    • 一口气:
      • 为新创建的索引创建别名
      • 从以前的索引中删除别名
    • 关闭旧索引或删除旧索引

    这样您的应用程序可以始终与别名对话,并且您确信您将始终有一个可以与之对话的索引。从索引中删除大量记录相对繁重,关闭或删除索引相对便宜。

    【讨论】:

      猜你喜欢
      • 2018-08-10
      • 2016-04-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-03
      • 2021-10-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多