Ejemplo n.º 1
0
        public ElasticResponse <T> ExecuteSearchRequest <T>(SearchDescriptor <T> searchDescriptor) where T : class
        {
            try
            {
                var client   = GetElasticClient();
                var response = client.Search <T>(s => searchDescriptor);

                if (response.TimedOut)
                {
                    return(ElasticResponse <T> .FailResponse(TimeoutMessage));
                }

                return(!response.ApiCall.Success
                    ? ElasticResponse <T> .FailResponse(response.ApiCall.OriginalException.Message)
                    : ElasticResponse <T> .SuccessResponse(response));
            }
            catch
            {
                return(ElasticResponse <T> .FailResponse(ServerErrorMessage));
            }
        }
Ejemplo n.º 2
0
        public ElasticResponse <T>[] ExecuteSearchRequestWithScroll <T>(SearchDescriptor <T> searchDescriptor) where T : class
        {
            var scrollTime = new Time(2000);
            var searchDescriptorWithScroll = searchDescriptor.From(0).Size(10).Scroll(scrollTime);
            var results = new List <ElasticResponse <T> >();

            try
            {
                var client   = GetElasticClient();
                var response = client.Search <T>(s => searchDescriptorWithScroll);
                if (!response.ApiCall.Success)
                {
                    return new[] { ElasticResponse <T> .FailResponse(response.ApiCall.OriginalException.Message) }
                }
                ;

                results.Add(ElasticResponse <T> .SuccessResponse(response));

                do
                {
                    var currentResponse = response;

                    response = client.Scroll <T>(scrollTime, currentResponse.ScrollId);
                    if (!response.ApiCall.Success)
                    {
                        return new[] { ElasticResponse <T> .FailResponse(response.ApiCall.OriginalException.Message) }
                    }
                    ;

                    results.Add(ElasticResponse <T> .SuccessResponse(response));
                } while (response.IsValid && response.Documents.Any());

                return(results.ToArray());
            }
            catch
            {
                return(new[] { ElasticResponse <T> .FailResponse(ServerErrorMessage) });
            }
        }