在一天中的不同随机时间,我将对数据进行“爬行”,我将将其提供给Elasticsearch。这个位工作正常。
但是索引应该只反映我最近的抓取中发现的内容,而且我目前没有任何内容可以删除Elasticsearch索引中的内容,该内容是从上一次抓取中遗留但未在新抓取中找到的。
从我所看到的,我有几个选择:
A)根据物品的年龄删除物品。因为索引时间是随机的,所以不起作用。
B)删除整个索引并输入新数据。看起来效率不高,会留给我一个空的或部分索引的时间。
C)执行插入/修改查询,如果未找到插入,如果已在索引中找到更新时间戳,则执行第二次删除以删除具有较旧时间戳的任何项目。
D)更好的东西。在这种情况下删除旧内容的逻辑和有效方法是什么?
答案 0 :(得分:5)
如果我理解你想做什么,并且你确定每次抓取包含完整的数据集,我会这样做:
通过这种方式,您的应用程序可以始终与别名通信,并确保您始终可以使用索引进行通信。从索引中删除大量记录相对较重,关闭或删除索引相对便宜。