删除Elasticsearch中的旧条目

Jim*_*mmy 1 search elasticsearch

在一天中不同的随机时间,我将对数据进行"爬行",我将提供给Elasticsearch.这个位工作正常.

但是,索引应该只反映我最近的爬网中发现的内容,而且我目前没有任何内容可以删除Elasticsearch索引中的内容,该内容是从上一次爬网中遗留但未在新爬网中找到的.

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

A)根据物品的年龄删除物品.因为索引时间是随机的,所以不起作用.

B)删除整个索引并输入新数据.看起来效率不高,会留给我一个空的或部分索引的时间.

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

D)更好的东西.

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

Jet*_*die 5

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

  • 抓取基于时间的索引:您索引201504051656
  • 一气呵成:
    • 为新创建的索引创建别名
    • 从以前的索引中删除别名
  • 关闭旧索引或删除旧索引

这样,您的应用程序可以始终与别名通信,并确保您始终可以使用索引进行通信.从索引中删除大量记录相对较重,关闭或删除索引相对便宜.