我们使用Sping Boot 应用程序来插入/更新ElasticSearch文档。我们的数据提供程序通过Kafka发送我们的数据。我们的应用程序处理事件,尝试查找记录并插入记录(如果不存在)或更新(如果接收到的记录与保存的记录不同)。在ElasticSearch中不应有任何重复的记录。
应用程序插入/更新文档,* 立即 * 刷新
问题:有时我们不得不删除所有的数据并重新加载它们,因为有重复的记录。我发现这些克隆的记录只在插入日期不同。通常是几个小时的差异。
一般来说,它按预期工作,org.codelibs.elasticsearch-cluster-runner
上的详细集成测试为绿色。
来自ElasticSearch查询的示例元数据:
{
"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
本地示例上进行了大量的插入、更新和查询-没有重复
详细数据:ElasticSearch版本-使用org.elasticsearch.client.RestHighLevelClient
的7.5 ES连接
1条答案
按热度按时间h79rfbju1#
原因已找到,其中一个节点在建立连接时出现问题,有时喜欢断开连接。