【异常】ES报错ElasticsearchStatusException:missing authentication credentials for REST request

这篇具有很好参考价值的文章主要介绍了【异常】ES报错ElasticsearchStatusException:missing authentication credentials for REST request。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、报错内容

Exception in thread "main" ElasticsearchStatusException[Elasticsearch exception [type=security_exception, reason=missing authentication credentials for REST request [/user2?master_timeout=30s&ignore_unavailable=false&expand_wildcards=open%2Cclosed&allow_no_indices=true&ignore_throttled=false&timeout=30s]]]
	at org.elasticsearch.rest.BytesRestResponse.errorFromXContent(BytesRestResponse.java:176)
	at org.elasticsearch.client.RestHighLevelClient.parseEntity(RestHighLevelClient.java:2011)
	at org.elasticsearch.client.RestHighLevelClient.parseResponseException(RestHighLevelClient.java:1988)
	at org.elasticsearch.client.RestHighLevelClient.internalPerformRequest(RestHighLevelClient.java:1745)
	at org.elasticsearch.client.RestHighLevelClient.performRequest(RestHighLevelClient.java:1702)
	at org.elasticsearch.client.RestHighLevelClient.performRequestAndParseEntity(RestHighLevelClient.java:1672)
	at org.elasticsearch.client.IndicesClient.delete(IndicesClient.java:103)
	at com.xxx.elasticsearch.operation.main(operation.java:26)
	Suppressed: org.elasticsearch.client.ResponseException: method [DELETE], host [http://10.219.87.159:32705], URI [/user2?master_timeout=30s&ignore_unavailable=false&expand_wildcards=open%2Cclosed&allow_no_indices=true&ignore_throttled=false&timeout=30s], status line [HTTP/1.1 401 Unauthorized]
{"error":{"root_cause":[{"type":"security_exception","reason":"missing authentication credentials for REST request [/user2?master_timeout=30s&ignore_unavailable=false&expand_wildcards=open%2Cclosed&allow_no_indices=true&ignore_throttled=false&timeout=30s]","header":{"WWW-Authenticate":"Basic realm=\"security\" charset=\"UTF-8\""}}],"type":"security_exception","reason":"missing authentication credentials for REST request [/user2?master_timeout=30s&ignore_unavailable=false&expand_wildcards=open%2Cclosed&allow_no_indices=true&ignore_throttled=false&timeout=30s]","header":{"WWW-Authenticate":"Basic realm=\"security\" charset=\"UTF-8\""}},"status":401}
		at org.elasticsearch.client.RestClient.convertResponse(RestClient.java:326)
		at org.elasticsearch.client.RestClient.performRequest(RestClient.java:296)
		at org.elasticsearch.client.RestClient.performRequest(RestClient.java:270)
		at org.elasticsearch.client.RestHighLevelClient.performClientRequest(RestHighLevelClient.java:2082)
		at org.elasticsearch.client.RestHighLevelClient.internalPerformRequest(RestHighLevelClient.java:1732)
		... 4 more

二、报错内容

使用Flink输出(sink)到Elasticsearch时,出现了上面的错误,是因为登录到ES,ES启用了账号密码的模式,因此必须要使用账号密码才能够访问它。

三、报错解决

于是新增如下代码后,问题解决文章来源地址https://www.toymoban.com/news/detail-514187.html

ElasticsearchSink.Builder<String> esSinkBuilder = new ElasticsearchSink.Builder<>(httpHosts,
       new ElasticsearchSinkFunction<String>() {
           public IndexRequest createIndexRequest(String element) {
               Map<String, String> json = new HashMap<>();
               json.put("data", element);
               return Requests.indexRequest()
                       .index("您的索引名")
                       //.type("my-type")
                       .source(json);
           }

           @Override
           public void process(String element, RuntimeContext ctx, RequestIndexer indexer) {
               indexer.add(createIndexRequest(element));
           }
       }
);
// 鉴权,正对写 es 需要密码的场景
esSinkBuilder.setRestClientFactory(new HDRestClientFactory("您的账号名", "您的密码"));

public class HDRestClientFactory implements RestClientFactory {

    private String userName;
    private String password;
    transient CredentialsProvider credentialsProvider;

    public HDRestClientFactory(String userName, String password) {
        this.userName = userName;
        this.password = password;
    }

    @Override
    public void configureRestClientBuilder(RestClientBuilder restClientBuilder) {
        if (credentialsProvider == null) {
            credentialsProvider = new BasicCredentialsProvider();
            credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials(userName, password));
        }
        restClientBuilder.setHttpClientConfigCallback(new RestClientBuilder.HttpClientConfigCallback() {
            @Override
            public HttpAsyncClientBuilder customizeHttpClient(HttpAsyncClientBuilder httpAsyncClientBuilder) {
                return httpAsyncClientBuilder.setDefaultCredentialsProvider(credentialsProvider);
            }
        }).setRequestConfigCallback(new RestClientBuilder.RequestConfigCallback() {
            @Override
            public RequestConfig.Builder customizeRequestConfig(RequestConfig.Builder builder) {
                builder.setConnectTimeout(5000);
                builder.setSocketTimeout(60000);
                builder.setConnectionRequestTimeout(2000);
                return builder;
            }
        });
    }
}

到了这里,关于【异常】ES报错ElasticsearchStatusException:missing authentication credentials for REST request的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • git权限异常:fatal: Authentication failed for

    本地电脑用户密码修改了,git 提交,拉取出现异常, 就会报这个错误fatal: Authentication failed for \\\'http://xxx/xxx/xxx\\\' 解决方法: 免输入用户密码方法: 此时,会在你本地生成一个文本,用于记录你的账号和密码。 再操作一次git pull(clone 或 push)操作后,它会提示你输入账号密码,

    2024年02月04日
    浏览(56)
  • ES 查询报错 I/O 异常解决方法: Request cannot be executed; I/O reactor status: STOPPED

    增加一个restClientBuilderCustomizer的bean 参考 https://www.shuzhiduo.com/A/kPzONDQadx/

    2024年02月06日
    浏览(35)
  • 链接KAFKA异常:Authentication failed during authentication due to invalid credentials with SASL mechanism

    使用带kerberos 认证的Kafka客户端链接kafka 创建topic 出现如下异常:Authentication failed during authentication due to invalid credentials with SASL mechanism。kafka server 后台只有如下异常信息: 开始排查问题原因: 通过查看Kafka源代码定位到错误大致发生在: 大概是在  saslServer.evaluateResponse 的时

    2024年02月11日
    浏览(44)
  • fiddler-----Authentication.AuthenticationException 调用 SSPI 失败,请参见内部异常

    返回: System.Security.SecurityException Failed to negotiate HTTPS connection with server.fiddler.network.https HTTPS handshake to http:*********** failed. System.Security.Authentication.AuthenticationException 调用 SSPI 失败, 要求的函数不受支持n\\\" ‘n’ + \\\'Win32 (SChannel) Native Error Code: 0x80090302 思路1:找到浏览器的代理服

    2024年02月11日
    浏览(38)
  • 【异常】SecurityException: JCE cannot authenticate the provider BC

    升级JDK21出现该异常 JCRCaused by: java.util.jar.JarException: jar:file:/app//service.jar!/BOOT-INF/lib/bcprov-jdk14-138.jar!/ has unsigned entries - org/bouncycastle/LICENSE.class   解决方案 排除 添加依赖 清理maven  install maven OK

    2024年01月22日
    浏览(41)
  • 【异常解决】postman请求提示Full authentication is required to access this resource

    在使用 postman 测试接口时,该接口需要在 Header 中传入 access_token ,实际上也在请求的 Header 中添加上了 access_token 参数,但是服务端还是返回401错误码,提示未登录, Full authentication is required to access this resource 。 然后将获取到的 access_token 输入到这个 Token 中去,如下图所示:

    2024年02月16日
    浏览(38)
  • 【Android编译报错:missing dependencies】

    最近在工作中,我遇到了一个编译问题,报错是这样的: missing dependencies : 看报错的意思是缺失依赖库 于是我在Android.bp中已经添加了所需要的依赖库,但是还是报这个错。 最后才查到原因:模块是用 Android.mk 构建编译的,而我编译的测试模块是 Android.bp 构建的 知道了原因,

    2024年02月06日
    浏览(36)
  • 【Debian】报错:su: Authentication failure

            今天我重新刷了一个debian系统。 系统版本: 我的系统版本: No LSB modules are available. Distributor ID:Debian Description: Debian GNU/Linux 12 (bookworm) Release:12 Codename:bookworm         在使用su 进入 root系统的时候报错。          su: Authentication failure         输入以上的命

    2024年02月07日
    浏览(43)
  • redis报错----NOAUTH Authentication required.

    意思:需要NOAUTH身份验证,那你输入密码验证就可以。 redis报这个错是因为你设置的密码,默认是没有的,是在reids.conf这个文件中设置的,一旦你设置了密码,无论是你在redis客户端连接,还是用Java代码连接,都是需要密码的, 先在redis的bin目录下找到redis.cocnf这个文件,输入

    2024年02月12日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包