在 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");

刷新等待索引完成。 这个答案可以参考。