2016-11-07 4 views
0

없이 SniffingConnectionPool이 작동하는 것 같습니다.SniffingConnectionPool 사용시 Nest 2.4.6 오류

var settings2 = new ConnectionSettings(new Uri(elasticSearchUri)) 
_elasticClient = new ElasticClient(settings2); 

그러나 아래 ConnectionSettings에 SniffingConnectionPool를 사용하여 아래 오류

var settings2 = new ConnectionSettings(new SniffingConnectionPool(new[] { new Uri(elasticSearchUri) })) 
       .DefaultIndex("myindex") 
       .DisableDirectStreaming(true); 

결과 : ". 클러스터 상태를 스니핑 실패"

인 Splunk 로그

Unable to import data to ElasticSearch - Failed sniffing cluster state.    PipelineException Project.ScheduledJobService LOCAL ERROR 
Unable to import data to ElasticSearch - One or more errors occurred.    AggregateException Project.ScheduledJobService LOCAL ERROR 
Unable to import data to ElasticSearch - Object reference not set to an instance of an object. 
NullReferenceException Project.ScheduledJobService 

전체 추적 :

at Elasticsearch.Net.RequestPipeline.Sniff() in C:\Users\russ\source\elasticsearch-net-2.x\src\Elasticsearch.Net\Transport\Pipeline\RequestPipeline.cs:line 358 
    at Elasticsearch.Net.RequestPipeline.FirstPoolUsage(SemaphoreSlim semaphore) in C:\Users\russ\source\elasticsearch-net-2.x\src\Elasticsearch.Net\Transport\Pipeline\RequestPipeline.cs:line 143 
    at Elasticsearch.Net.Transport`1.Request[TReturn](HttpMethod method, String path, PostData`1 data, IRequestParameters requestParameters) in C:\Users\russ\source\elasticsearch-net-2.x\src\Elasticsearch.Net\Transport\Transport.cs:line 53 
    at Elasticsearch.Net.ElasticLowLevelClient.DoRequest[T](HttpMethod method, String path, PostData`1 data, IRequestParameters requestParameters) in C:\Users\russ\source\elasticsearch-net-2.x\src\Elasticsearch.Net\ElasticLowLevelClient.cs:line 58 
    at Elasticsearch.Net.ElasticLowLevelClient.Bulk[T](PostData`1 body, Func`2 requestParameters) in C:\Users\russ\source\elasticsearch-net-2.x\src\Elasticsearch.Net\ElasticLowLevelClient.Generated.cs:line 32 
    at Nest.LowLevelDispatch.BulkDispatch[T](IRequest`1 p, PostData`1 body) in C:\Users\russ\source\elasticsearch-net-2.x\src\Nest\_Generated\_LowLevelDispatch.generated.cs:line 26 
    at Nest.ElasticClient.Nest.IHighLevelToLowLevelDispatcher.Dispatch[TRequest,TQueryString,TResponse](TRequest request, Func`3 responseGenerator, Func`3 dispatch) in C:\Users\russ\source\elasticsearch-net-2.x\src\Nest\ElasticClient.cs:line 56 
    at Nest.ElasticClient.Nest.IHighLevelToLowLevelDispatcher.Dispatch[TRequest,TQueryString,TResponse](TRequest request, Func`3 dispatch) in C:\Users\russ\source\elasticsearch-net-2.x\src\Nest\ElasticClient.cs:line 46 
    at Nest.ElasticClient.Bulk(IBulkRequest request) in C:\Users\russ\source\elasticsearch-net-2.x\src\Nest\Document\Multiple\Bulk\ElasticClient-Bulk.cs:line 32 
    at Project.Core.Services.ElasticSearchService.IndexMultiple(IEnumerable`1 documents) 
    at Project.ScheduledJobService.Jobs.ElasticSearch.ElasticSearchTrackedChangesDataImportJob.Execute() in C:\Users\Martynas.Valaika\Code\Project\Main\Source\Project\Project.ScheduledJobService\Jobs\Elasticsearch\ElasticSearchTrackedChangesDataImportJob.cs:line 35 

답변

1

은 분명히 ES 5.0에 버그가있다. SniffingConnectionPool을 SingleNodeConnectionPool로 바꾸면 작업을 수행해야합니다.

var pool = new SingleNodeConnectionPool(new Uri(uri)); 
       var settings = new ConnectionSettings(pool, connectionSettings => new MyJsonNetSerializer(connectionSettings)) 
        .DefaultIndex("seetickets_search_results") 
        .DisableDirectStreaming(); 

       _elasticClient = new ElasticClient(settings); 
+2

버그에 대한 링크가 있습니까? 'SingleNodeConnectionPool'과'SniffingConnectionPool'은 요청을 보낼 수있는 노드를 유지하는 것과는 다른 일을합니다. NEST 2.4.7은 Elasticsearch 5.0과 호환되지 않습니다. 5.0에서 실행 중이면 NEST 5.0.0-rc1을 사용해야합니다. –