2015-04-05 55 views
1

在整个一天的不同随机时间,我将对我将要提供给Elasticsearch的数据进行“抓取”。这一点工作得很好。删除Elasticsearch中的旧条目

但是,该索引应该仅反映我最近一次抓取中发现的内容,而我目前没有任何内容可以删除Elasticsearch索引中的内容,该索引是上次抓取时遗留下来的,但未在新抓取中找到。

从我所看到的,我有几个选择:

A)删除项目基础上,他们的年龄有多大。由于索引时间是随机的,因此不起作用。 B)删除整个索引并输入新的数据。看起来效率不高并且会留下空白或部分索引的时间。

C)做一个插入/修改查询,如果找不到插入,如果已经在索引中找到更新时间戳,那么做第二次删除任何具有较旧时间戳的项目。 D)更好的东西。

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

回答

5

如果我知道你想做什么,你是确保每个爬包含完整的数据集,我这样做:

  • 爬进基于时间指数:您指数201504051656
  • 一气呵成:
    • 从以前的索引创建一个别名到新创建的索引
    • 删除别名
  • 关闭旧索引或删除旧索引

这样,你的应用程序都可以告诉别名,你确信你将永远有一个索引交谈。从索引中删除大量记录相对较多,关闭或删除索引相对便宜。