private Task RefreshForConsistency(IRepositoryQuery query, ICommandOptions options) { // all docs are saved with immediate or wait consistency, no need to force a refresh if (DefaultConsistency != Consistency.Eventual) { return(Task.CompletedTask); } // if using immediate consistency, force a refresh before query if (options.GetConsistency() == Consistency.Immediate) { var indices = ElasticIndex.GetIndexesByQuery(query); return(_client.Indices.RefreshAsync(indices)); } return(Task.CompletedTask); }
protected virtual async Task <SearchDescriptor <T> > ConfigureSearchDescriptorAsync(SearchDescriptor <T> search, IRepositoryQuery query, ICommandOptions options) { search ??= new SearchDescriptor <T>(); query = ConfigureQuery(query.As <T>()).Unwrap(); var indices = ElasticIndex.GetIndexesByQuery(query); if (indices?.Length > 0) { search.Index(String.Join(",", indices)); } if (HasVersion) { search.SequenceNumberPrimaryTerm(HasVersion); } search.IgnoreUnavailable(); search.TrackTotalHits(); await ElasticIndex.QueryBuilder.ConfigureSearchAsync(query, options, search).AnyContext(); return(search); }