我正在尝试使用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/