在 Elasticsearch NEST 中间歇性索引失败后立即调用搜索
Calling Search immediately after indexing fails intermittently in Elasticsearch NEST
我正在使用 NEST
Elasticsearch
客户端并尝试进行单元测试。我看到 GET 立即开始工作,但 SEARCH 需要几毫秒,导致测试间歇性失败。
await _elasticClient.GetAsync<User>(id)).Source; //Works fine
elasticClient.Search<User>(s =>
s.Query(q =>
q.MultiMatch(x =>
x.Fields(f => f
.Field(petType => petType.Name, 3)
.Field(petType => petType.Category)
)));
// response.Documents is empty many times.
在 Index 和 Search 语句之间添加 500 毫秒的延迟有效,但会使测试变慢。
有没有办法解决这个问题
我相信搜索遵循最终一致性。我将尝试将副本数或分片数配置为 1,看看是否有帮助。
我可以通过调用刷新来解决这个问题 API。
await _client.Indices.RefreshAsync("index-name");
刷新等待索引完成。
这个答案可以参考。
我正在使用 NEST
Elasticsearch
客户端并尝试进行单元测试。我看到 GET 立即开始工作,但 SEARCH 需要几毫秒,导致测试间歇性失败。
await _elasticClient.GetAsync<User>(id)).Source; //Works fine
elasticClient.Search<User>(s =>
s.Query(q =>
q.MultiMatch(x =>
x.Fields(f => f
.Field(petType => petType.Name, 3)
.Field(petType => petType.Category)
)));
// response.Documents is empty many times.
在 Index 和 Search 语句之间添加 500 毫秒的延迟有效,但会使测试变慢。
有没有办法解决这个问题
我相信搜索遵循最终一致性。我将尝试将副本数或分片数配置为 1,看看是否有帮助。
我可以通过调用刷新来解决这个问题 API。
await _client.Indices.RefreshAsync("index-name");
刷新等待索引完成。 这个答案可以参考。