elasticsearch,Sql,elasticsearch" /> elasticsearch,Sql,elasticsearch" />

检查ES和SQL数据库之间的差异

检查ES和SQL数据库之间的差异,sql,elasticsearch,Sql,elasticsearch,我目前有一个SQL数据库,大约有250000条记录(具有唯一ID),每次向数据库中添加一条记录时,它也会记录在ES中(具有唯一ID)。数据库中的每条记录都有一个已删除字段,用于软删除(这不会记录在ES中)。由于记录可以软删除,ES中的文档数始终等于或大于数据库中非软删除记录数 我还编写了删除ES中所有文档的代码,并用未删除的记录填充它,以便#ES documents==#未删除文档 假设我想检查所有未删除的记录是否都在ES中(它们应该在ES中,但假设由于某种原因,在将记录添加到数据库后,它无法在

我目前有一个SQL数据库,大约有250000条记录(具有唯一ID),每次向数据库中添加一条记录时,它也会记录在ES中(具有唯一ID)。数据库中的每条记录都有一个已删除字段,用于软删除(这不会记录在ES中)。由于记录可以软删除,ES中的文档数始终等于或大于数据库中非软删除记录数

我还编写了删除ES中所有文档的代码,并用未删除的记录填充它,以便#ES documents==#未删除文档

假设我想检查所有未删除的记录是否都在ES中(它们应该在ES中,但假设由于某种原因,在将记录添加到数据库后,它无法在ES中对其进行索引,我们不知道),最好的方法是什么


起初,我想搜索数据库中每一条未删除的记录,但那就是250000个GET请求,有没有更好的方法来比较差异?

我建议如下:

  • deleted
    字段也添加到ES文档中,并且每次在SQL中(软)删除文档时,也会更新ES中的
    deleted
    字段
  • 为了获得所有未删除记录的数量,您只需使用一个简单的查询来计算带有
    deleted:false
    的文档

  • 您不需要执行250K GET请求。使用(with
    \u source:false
    ),您可以轻松检索250批1000份文档(或更少批更多文档,您的里程数可能会有所不同)。