【发布时间】:2018-11-19 15:19:46
【问题描述】:
我在 java 中进行了一个外观的集成测试,它做了一些事情,其中包括对弹性搜索数据库的索引操作。这个弹性搜索数据库的设置非常天真(实际上是开箱即用的东西,我正在学习中)。 插入在该外观内完成,使用 java api,也非常天真,示例几乎完全从弹性搜索中复制粘贴,如下所述:http://www.elasticsearch.org/guide/reference/java-api/index_.html。
之后我测试了我的外观是否正确地完成了它的工作,其中一部分是检查该文档是否真的被插入到数据库中。我再次按照弹性在他们的网站上描述的方式这样做:http://www.elasticsearch.org/guide/reference/java-api/search.html。我插入具有特定负载的文档并以相同的方式查找它。
如果我在调试中运行并在外观完成后设置断点,则此测试有效,但如果我不放置此断点或不在调试中运行,它会失败并且找不到结果。这让我觉得我真的做错了什么。此外,应用程序本身可以工作(插入等),所以我的集成测试可能有问题,而不是我复制粘贴的代码。
我猜在索引操作返回之后,索引还没有真正完成,或者在搜索之前有一些复制没有完成,或者类似的事情,但它让我不知道究竟是什么,我可以'似乎也解决了它。 我还没有尝试将弹性放在一个节点和一个分片上,也许那里有问题,但我真的不知道到底是什么,所以我还没有走那条路。 就像我说的,刚开始使用弹性,所以我可能会遗漏一些重要的和初学者风格的东西。如果需要,我可以粘贴我的确切代码,但就像我说的那样,它归结为在测试中使用来自弹性搜索站点的两个代码 sn-ps。
卡斯帕
【问题讨论】:
-
如果它是从调试中运行的,但不是在您刚刚运行时运行,那么您的测试开始似乎是在启动一个新线程,然后不等待线程完成。
标签: java elasticsearch