解决RestHighLevelClient报错missing authentication credentials for REST request

使用ElasticSearch Java API时遇到错误 "missing authentication credentials for REST request"

这是代码:

RestHighLevelClient esClient =
                new RestHighLevelClient(RestClient.builder(new HttpHost("localhost",9200,"http")));

        CreateIndexRequest createIndexRequest = new CreateIndexRequest("user");
        CreateIndexResponse createIndexResponse = esClient.indices().create(createIndexRequest, RequestOptions.DEFAULT);
        boolean acknowledged = createIndexResponse.isAcknowledged();
        System.out.println("创建索引:" + acknowledged);

        esClient.close();

 原因是请求没有发送用户名和密码,没有通过验证导致的。

1. 解决方法,使用RestClientBuilder,将ES登录用户名和密码添加进去,修改如下:

RestClientBuilder build = RestClient.builder(new HttpHost("localhost",9200,"http"));
        CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
        credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials("elastic", "e5nTeAjoHTTPg--WgM49")); //用户名和密码
        build.setHttpClientConfigCallback((HttpAsyncClientBuilder httpAsyncClientBuilder) -> httpAsyncClientBuilder.setDefaultCredentialsProvider(credentialsProvider));
        RestHighLevelClient esClient = new RestHighLevelClient(build);

        CreateIndexRequest createIndexRequest = new CreateIndexRequest("user");
        CreateIndexResponse createIndexResponse = esClient.indices().create(createIndexRequest, RequestOptions.DEFAULT);
        boolean acknowledged = createIndexResponse.isAcknowledged();
        System.out.println("创建索引:" + acknowledged);

        esClient.close();

顺利解决:

2. 还有一种解决方法,就是取消身份验证(不推荐)。

进入ES的config文件,找到并打开文件elasticsearch.yml。

找到以下配置,并改为false,如下:

# Enable security features
xpack.security.enabled: false

xpack.security.enrollment.enabled: false

  • 7
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: "missing authentication credentials for rest request" 的意思是 REST 请求缺少身份验证凭据。这通常是由于未提供正确的用户名和密码或访问令牌等凭据导致的。要解决此问题,您需要提供正确的身份验证凭据,以便服务器可以验证您的身份并授予您访问权限。 ### 回答2: “missing authentication credentials for rest request”这个错误信息表示,在进行REST请求时缺少了身份验证凭证。在进行REST API访问时,用户需要提供身份验证凭证,从而确保只有授权用户才能访问数据或执行某些操作。如果没有提供正确的身份验证凭证,系统将会拒绝这个请求,并返回这个错误信息。 “身份验证凭证”通常指的是API Key或Token,在进行API请求时需要提供这些认证凭证。API Key是一串由系统生成的密钥,用于标识应用程序并授权其使用API。API Token(令牌)也是一种授权凭证,用户登录应用程序后生成。 如果你收到了“missing authentication credentials for rest request”错误信息,需要首先检查是否已正确提供API认证凭证。另外,如果你所使用的API密钥或Token无效或已过期,也会出现这个错误信息。 您可以采取以下措施来解决这个错误信息: 1. 确认API认证凭证是否正确并未过期。 2. 确认请求中是否已包含正确的API认证凭证。 3. 尝试重新生成API Key或Token,然后更新应用程序和API请求中的认证凭证。 4. 如果您使用的是第三方API,需要联系API提供商寻求帮助。 总之,在进行REST API访问时,身份验证凭证是一个很重要的部分,必须确保正确提供和使用。只有这样才能够顺利地进行API请求并获得数据或执行操作。 ### 回答3: 在使用Elasticsearch进行REST请求时,如果出现“missing authentication credentials for rest request报错,意思是REST请求缺少认证信息。 这通常表示用户在发送请求时,没有提供所需的认证信息,很可能是用户没有提供正确的用户名和密码信息。在实际应用中,通常需要提供请求头中包含用户名和密码的Base64编码字符串或者token等认证信息来进行身份验证。 如果问题出现在编写代码时,可以在创建Elasticsearch客户端时加上认证信息: ``` var client = new elasticsearch.Client({ host: 'localhost:9200', log: 'trace', httpAuth: 'username:password' }); ``` 如果是运行在云端的服务,可能需要通过云服务提供的认证方式来获取认证信息,例如存储在环境变量中的密钥和证书等。 总之,如果出现“missing authentication credentials for rest request报错,需要检查是否提供了正确的认证信息。否则需要提供相应的认证信息才能通过ElasticsearchREST API进行请求或查询。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值