You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Java代码中通过Cerebro登录及调用REST API查询ES信息

Java操作Cerebro查询Elasticsearch信息的两种实现方案

1. 无认证下通过Cerebro REST API查询ES信息

Cerebro是Elasticsearch的可视化管理工具,内置了一套REST API用于查询ES集群、节点、索引等数据。在未开启认证的Cerebro实例中,可直接通过Java HTTP客户端调用其API获取ES信息。

以查询ES集群健康状态为例,核心步骤:

  • 确定Cerebro API端点:比如集群健康接口为 http://<cerebro-ip>:9000/api/<cluster-name>/cluster/health(<cluster-name>为你在Cerebro中配置的集群标识)
  • 使用Java HTTP客户端(如RestTemplate、OkHttp)发送GET请求

代码示例(RestTemplate)

import org.springframework.web.client.RestTemplate;

public class CerebroEsQuery {
    public static void main(String[] args) {
        String cerebroHost = "http://localhost:9000";
        String clusterId = "my-es-cluster"; // 替换为你的集群名
        String apiUrl = String.format("%s/api/%s/cluster/health", cerebroHost, clusterId);

        RestTemplate restTemplate = new RestTemplate();
        // 返回的JSON字符串可自行解析为实体类或直接处理
        String healthResponse = restTemplate.getForObject(apiUrl, String.class);
        System.out.println("ES集群健康状态: " + healthResponse);
    }
}

2. 带用户名密码认证调用Cerebro REST API

如果Cerebro开启了HTTP基本认证(通过配置文件启用),需要在请求中携带认证信息,常见方式是添加Authorization请求头,或让HTTP客户端自动处理认证逻辑。

代码示例(RestTemplate带基本认证)

import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpMethod;
import org.springframework.http.ResponseEntity;
import org.springframework.web.client.RestTemplate;
import java.util.Base64;

public class AuthenticatedCerebroQuery {
    public static void main(String[] args) {
        String cerebroHost = "http://localhost:9000";
        String clusterId = "my-es-cluster";
        String apiUrl = String.format("%s/api/%s/cluster/health", cerebroHost, clusterId);
        
        // 替换为你的Cerebro认证账号
        String username = "admin";
        String password = "cerebro123";
        String auth = username + ":" + password;
        String encodedAuth = Base64.getEncoder().encodeToString(auth.getBytes());
        String authHeader = "Basic " + encodedAuth;

        HttpHeaders headers = new HttpHeaders();
        headers.set("Authorization", authHeader);
        HttpEntity<String> entity = new HttpEntity<>(headers);

        RestTemplate restTemplate = new RestTemplate();
        ResponseEntity<String> response = restTemplate.exchange(
                apiUrl,
                HttpMethod.GET,
                entity,
                String.class
        );
        
        System.out.println("认证后ES集群健康状态: " + response.getBody());
    }
}

补充说明

  • Cerebro的API路径可根据需求调整:比如查询索引列表用/api/<cluster-id>/indices,查询节点信息用/api/<cluster-id>/nodes
  • 若使用OkHttp或原生HttpClient,逻辑一致,只需添加对应认证头即可
  • 确保Cerebro已正确配置ES集群连接,且API端点路径与你的Cerebro版本匹配

内容的提问来源于stack exchange,提问作者Jack Ma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 02:57:22