【发布时间】:2021-04-29 06:37:50
【问题描述】:
我为我的 ElasticSearch 功能创建了一些测试,我注意到一些奇怪的行为。如果我有一个测试:
- 插入文档并确认没有错误
- 检索同一个文档,确认没有错误并确认它具有预期值
- 删除文档,确认没有错误并确认已删除 1 个文档
那么第三次测试将失败,因为 0 个文档被删除。如果我采取以下步骤之一:
- 调试测试并在插入之后但删除之前放置断点
- 在删除步骤之前添加
time.Sleep(time.Second)
然后删除 1 个文档,第 3 次测试将通过。在第 3 次测试失败的情况下,我进入了我的 ES 实例并确认该文档存在。
这让我相信,在插入文档后,有一段时间必须发生一些事情,然后我才能删除该文档。
我的问题是 - 插入后需要做什么才能删除文档,在我的测试中是否有比休眠 1 秒更好的方法来处理这个问题?
我正在使用 Golang 进行编码,我正在使用 Olivere ES Client
【问题讨论】:
-
这不太可能与 Go 有任何关系。插入调用返回后,Elastic 不保证一致性。
标签: go elasticsearch