检查ES和SQL数据库之间的差异
我目前有一个SQL数据库,大约有250000条记录(具有唯一ID),每次向数据库中添加一条记录时,它也会记录在ES中(具有唯一ID)。数据库中的每条记录都有一个已删除字段,用于软删除(这不会记录在ES中)。由于记录可以软删除,ES中的文档数始终等于或大于数据库中非软删除记录数 我还编写了删除ES中所有文档的代码,并用未删除的记录填充它,以便#ES documents==#未删除文档 假设我想检查所有未删除的记录是否都在ES中(它们应该在ES中,但假设由于某种原因,在将记录添加到数据库后,它无法在ES中对其进行索引,我们不知道),最好的方法是什么检查ES和SQL数据库之间的差异,sql,
elasticsearch,Sql,
elasticsearch,我目前有一个SQL数据库,大约有250000条记录(具有唯一ID),每次向数据库中添加一条记录时,它也会记录在ES中(具有唯一ID)。数据库中的每条记录都有一个已删除字段,用于软删除(这不会记录在ES中)。由于记录可以软删除,ES中的文档数始终等于或大于数据库中非软删除记录数 我还编写了删除ES中所有文档的代码,并用未删除的记录填充它,以便#ES documents==#未删除文档 假设我想检查所有未删除的记录是否都在ES中(它们应该在ES中,但假设由于某种原因,在将记录添加到数据库后,它无法在
起初,我想搜索数据库中每一条未删除的记录,但那就是250000个GET请求,有没有更好的方法来比较差异?我建议如下:
deleted
字段也添加到ES文档中,并且每次在SQL中(软)删除文档时,也会更新ES中的deleted
字段deleted:false
的文档您不需要执行250K GET请求。使用(with
\u source:false
),您可以轻松检索250批1000份文档(或更少批更多文档,您的里程数可能会有所不同)。