【问题标题】:could not authenticate with the specified node - ElasticSearch无法使用指定的节点进行身份验证 - ElasticSearch
【发布时间】:2019-09-10 12:54:59
【问题描述】:

在azure中使用nest client 7.2.1连接elastic db内部负载均衡器。

异常:无法为警报事件创建数据库索引。从 HEAD 上的不成功 (401) 低级别调用构建的无效 NEST 响应:/# 此 API 调用的审计跟踪:- [1] 错误响应:节点:http://192.168.0.4:9200/异常:PipelineException Take: 00:00:00.0506796 # OriginalException: Elasticsearch.Net.ElasticsearchClientException: 无法通过指定节点进行身份验证。尝试验证您的凭据或检查您的 Shield 配置。调用:状态码 401 来自:HEAD / ---> Elasticsearch.Net.PipelineException:无法通过指定节点进行身份验证。尝试验证您的凭据或检查您的 Shield 配置。在 Elasticsearch.Net.RequestPipeline.ThrowBadAuthPipelineExceptionWhenNeeded(IApiCallDetails 详细信息,IElasticsearchResponse 响应) 在 Elasticsearch.Net.RequestPipeline.CallElasticsearch[TResponse](RequestData requestData) 在 Elasticsearch.Net.Transport1.Request[TResponse](HttpMethod method, String path, PostData data, IRequestParameters requestParameters) --- End of inner exception stack trace --- # Audit exception in step 1 BadResponse: Elasticsearch.Net.PipelineException: Could not authenticate with the specified node. Try verifying your credentials or check your Shield configuration. at Elasticsearch.Net.RequestPipeline.ThrowBadAuthPipelineExceptionWhenNeeded(IApiCallDetails details, IElasticsearchResponse response) at Elasticsearch.Net.RequestPipeline.CallElasticsearch[TResponse](RequestData requestData) at Elasticsearch.Net.Transport1.Request[TResponse](HttpMethod 方法,字符串path, PostData data, IRequestParameters requestParameters) # Request: # Response: Unsuccessful (401) low level call on PUT: /asx-sleepquality # Audit trail of this API call: - [1] BadResponse: Node: http://192.168.0.4:9200/ Exception: PipelineException Take: 00:00:00.4294201 # OriginalException: Elasticsearch.Net.ElasticsearchClientException: 无法通过指定节点进行身份验证。尝试验证您的凭据或检查您的 Shield 配置。调用:状态码 401,来自:PUT /asx-sleepquality。 ServerError:类型:security_exception 原因:“缺少 REST 请求的身份验证凭据 [/asx-sleepquality]”---> Elasticsearch.Net.PipelineException:无法使用指定节点进行身份验证。尝试验证您的凭据或检查您的 Shield 配置。在 Elasticsearch.Net.RequestPipeline.ThrowBadAuthPipelineExceptionWhenNeeded(IApiCallDetails 详细信息,IElasticsearchResponse 响应) 在 Elasticsearch.Net.RequestPipeline.CallElasticsearch[TResponse](RequestData requestData) 在 Elasticsearch.Net.Transport1.Request[TResponse](HttpMethod method, String path, PostData data, IRequestParameters requestParameters) --- End of inner exception stack trace --- # Audit exception in step 1 BadResponse: Elasticsearch.Net.PipelineException: Could not authenticate with the specified node. Try verifying your credentials or check your Shield configuration. at Elasticsearch.Net.RequestPipeline.ThrowBadAuthPipelineExceptionWhenNeeded(IApiCallDetails details, IElasticsearchResponse response) at Elasticsearch.Net.RequestPipeline.CallElasticsearch[TResponse](RequestData requestData) at Elasticsearch.Net.Transport1.Request[TResponse](HttpMethod 方法,字符串path, PostData data, IRequestParameters requestParameters) # Request: # Response:

 const string Url = "http://192.168.0.4:9200"; 
            var settings = new ConnectionSettings(new Uri(Url));
            ElasticSearchClient = new ElasticClient(settings);

            var indexes = GetAsxIndexes();

            var response = ElasticSearchClient.Ping().DebugInformation;

【问题讨论】:

    标签: c# elasticsearch selenium-webdriver nest


    【解决方案1】:

    以下代码解决了我的问题

    //Reading the configuration from appsettings.json
    var elasticConfig = hostContext.Configuration.GetSection("ElasticSearch");
    
    // 1. Register NEST ElasticClient
    var settings = new ConnectionSettings(new Uri(elasticConfig["Uri"]))
                        .BasicAuthentication(elasticConfig["UserName"], elasticConfig["Password"])
                        .DefaultIndex(elasticConfig["DefaultIndex"]);
    
    settings.PrettyJson();
    
    var client = new ElasticClient(settings);
    

    【讨论】:

      【解决方案2】:

      您正在尝试根据错误消息向已启用安全性的 Elasticsearch 集群发出请求

      无法通过指定节点进行身份验证。尝试验证您的凭据或检查您的 Shield 配置。调用:状态码 401 来自:HEAD /

      您需要在ConnectionSettings 中提供身份验证凭据以供客户端使用

      var pool = new SingleNodeConnectionPool(new Uri("http://192.168.0.4:9200"));
      
      var settings = new ConnectionSettings(pool)
          // configure the client with authentication credentials
          .BasicAuthentication("user", "password");
      
      
      var client = new ElasticClient(settings);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-11-05
        • 2019-02-14
        • 2013-05-30
        • 2015-02-21
        • 1970-01-01
        • 1970-01-01
        • 2018-09-27
        相关资源
        最近更新 更多