/// <inheritdoc cref="ISearchProvider.Search"/>
        public virtual IEnumerable <Dictionary <string, string> > Search(SearchQuery request)
        {
            var entitySchema = SetSchemaColumnAlliases(request);
            var query        = _queryBuilder.BuildQuery(request);

            if (query == null)
            {
                _log.Error($"There is empty request. RootSchema is {request.SchemaName}");
                return(null);
            }
            var elasticCollection = GetElasticCollection(query);
            var resultCollection  = GetResponseCollection(elasticCollection);

            if (request.PrimaryColumnValue.HasValue)
            {
                resultCollection = FilterCollectionByPrimaryColumnValue(resultCollection, request.PrimaryColumnValue.Value,
                                                                        entitySchema);
            }
            return(resultCollection);
        }
Beispiel #2
0
 /// <summary>
 /// Send request to elasticsearch.
 /// </summary>
 /// <param name="queries">Key requests for elasticsearch.</param>
 /// <returns>Results record found on request.</returns>
 public virtual IEnumerable <Dictionary <string, string> > SearchEmails(List <string> queries)
 {
     try {
         var resultCollection = new List <Dictionary <string, string> >();
         foreach (var request in CreateESSelectQueries(queries))
         {
             SetRequestQueries(request);
             var query = _queryBuilder.BuildQuery(request);
             if (query == null)
             {
                 _log.Error("There is empty request");
                 return(null);
             }
             var elasticCollection = _elasticSearchRepository.GetCollection(query);
             var collection        = GetCollection(elasticCollection, request.SchemaName);
             resultCollection.AddRange(collection);
         }
         return(resultCollection);
     } catch (Exception exp) {
         _log.Error(string.Format("{0}\r\n{1}", exp.Message, exp.StackTrace));
         throw;
     }
 }