public ElasticMultiSearchRequest Build() { var query = new ElasticMultiSearchRequest(); foreach (var header in FromParts) { var item = new ElasticMultiSearchItem(); item.Index = header.Index; var from = WhereParts.Where(x => x.Index.index == item.Index.index).SingleOrDefault(); if (from != null) item.Query = new QueryData() { query = new SearchQuery(from.FormatExpression()) }; query.MultiIndexSearchItems.Add(item); } return query; }
public Pager NextPage() { if (request.MultiIndexSearchItems.Count == 0) { return(null); } var pageRequest = new ElasticMultiSearchRequest(); foreach (var rq in request.MultiIndexSearchItems) { var matchingResponse = response.Responses .Where(x => x.HasResults) .SingleOrDefault(x => x.Hits.Hits.Any(r => r._index == rq.Index.index)); if (matchingResponse == null) { continue; } if (rq.Query.HasMore(matchingResponse.Hits.Total)) { var nextPageQuery = rq.Query.NextPage(); var indexQuery = new ElasticMultiSearchItem() { Index = new QueryIndex(rq.Index.index), Query = nextPageQuery, }; pageRequest.MultiIndexSearchItems.Add(indexQuery); } } if (pageRequest.MultiIndexSearchItems.Count == 0) { return(null); } return(new Pager(projection, pageRequest)); }