internal static string JsonBody(this ElasticMultiSearchRequest requestData) { string body = string.Empty; foreach (var searchItem in requestData.MultiIndexSearchItems) { body += Newtonsoft.Json.JsonConvert.SerializeObject(searchItem.Index) + System.Environment.NewLine; body += Newtonsoft.Json.JsonConvert.SerializeObject(searchItem.Query) + System.Environment.NewLine; } body += System.Environment.NewLine; return(body); }
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)); }
public Pager(ProjectionApi projection, ElasticMultiSearchRequest request) { this.projection = projection; this.request = request; }
public ElasticSearchReader(ProjectionApi projection, ElasticMultiSearchRequest elasticSearchRequest) { this.projection = projection; this.elasticSearchRequest = elasticSearchRequest; }
public IEnumerable <SearchableEvent> MultiSearch(ElasticMultiSearchRequest elasticSearchRequest) { var reader = new ElasticSearchReader(this, elasticSearchRequest); return(reader); }