0

我们使用 spring boot 应用程序来插入/更新弹性搜索文档。我们的数据提供者通过 Kafka 发送数据。我们的应用程序处理事件,尝试查找记录并插入记录,如果不存在,或者如果接收到的记录与保存的记录不同,则更新。elasticsearch 中不应该有任何重复的记录。

应用程序插入/更新文档并立即刷新

问题:有时我们必须删除所有数据并重新加载它们,因为有重复的记录。我发现这些克隆的记录仅与插入日期不同。它通常有几个小时的差异。

通常它按预期工作,详细的集成测试org.codelibs.elasticsearch-cluster-runner是绿色的。

来自弹性搜索查询的示例元数据:

{
  "docs" : [
    {
      "_index" : "reference",
      "_type" : "reference",
      "_id" : "s0z-BHIBCvxpj4TjysIf",
      "_version" : 1,
      "_seq_no" : 17315835,
      "_primary_term" : 40,
      "found" : true,
      "_source" : {
        ...
        "insertedDate" : 1589221706262,
        ...
      }
    },
    {
      "_index" : "reference",
      "_type" : "reference",
      "_id" : "jdVCBHIBXucoJmjM8emL",
      "_version" : 1,
      "_seq_no" : 17346529,
      "_primary_term" : 41,
      "found" : true,
      "_source" : {
...
        "insertedDate" : 1589209395577,
...
      }
    }
  ]
}

测试

  • 我将多次数据加载到 ES 的本地实例 - 没有重复
  • 我创建了一些长期工作的集成测试,在内存中有 1 到 5 个节点的本地实例上进行大量插入、更新、查询 -org.codelibs.elasticsearch-cluster-runner没有重复 

详细信息:Elastic Search 版本 - 7.5 ES 连接org.elasticsearch.client.RestHighLevelClient

4

1 回答 1

0

原因已经找到。其中一个节点无法建立连接,有时喜欢断开连接。

于 2020-05-20T08:44:07.843 回答