unit-testing - 如何知道添加新数据后 Elasticsearch 何时准备好进行查询?

标签 unit-testing elasticsearch

我正在尝试使用elasticsearch进行一些单元测试。首先,我使用索引API大约100次,以将新数据添加到索引中。然后,我将搜索API与aggs结合使用。问题是,如果我在添加数据100次后不暂停1秒钟,则会得到随机结果。如果我等待1秒钟,我总是会得到相同的结果。

我宁愿不必在测试中等待x的时间,这似乎是一种不好的做法。有没有办法知道何时准备好数据?

我一直等到我已经从elasticsearch / index api获得成功响应后,但这似乎还不够。

最佳答案

首先,我建议您使用一个bulk查询为您的文档建立索引:由于减少了http / tcp开销,因此可以节省一些时间。

要回答您的问题,在为100个文档建立索引时,应考虑使用refresh=true参数(或wait_for)。

如文档中所述,它将:

Refresh the relevant primary and replica shards (not the whole index) immediately after the operation occurs, so that the updated document appears in search results immediately



有关此的更多信息:
https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-refresh.html

关于unit-testing - 如何知道添加新数据后 Elasticsearch 何时准备好进行查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59342009/

相关文章:

node.js - 如何使用 elastic.js 客户端索引文档?

elasticsearch - 在 Elasticsearch 中将字段映射到类型有哪些优点?

elasticsearch - elasticsearch生成的ids的长度和字符是多少?

ruby-on-rails - 在大型 Rails 应用程序中加速 RSpec 测试

java - 我可以在 Maven 构建中使用 PostgreSQL 吗?

php - PHP中的单元测试数据存储

C# stub 。每个可测试对象的接口(interface)?

unit-testing - 抛出异常后的单元测试行为?

javascript - ElasticSearch 错误 : [term] query does not support different field names, 使用 [bool] 查询代替

amazon-web-services - aws elasticsearch 身份验证错误并显示 403