Java中通过ElasticSearchClient获取elasticSearch数据库的索引名称、字段名及数据

ElasticSearch 相关操作

在java连接 elasticSearch 过程中,可通过JDBC(org.elasticsearch.xpack.sql.jdbc.EsDriver)连接查询,但JDBC的查询等操作需要白金(或试用(Trial))许可证才可以,如果elasticSearch许可证为 基础(Basic),则只能通过elasticSearch相关的Client进行操作。

    <dependency>
        <groupId>org.elasticsearch.plugin</groupId>
        <artifactId>x-pack-sql-jdbc</artifactId>
        <version>7.10.0</version>
    </dependency>

1. 加载JDBC驱动

	private static final String DRIVER = "org.elasticsearch.xpack.sql.jdbc.EsDriver";

    static {
   
        try {
   
            Class.forName(DRIVER);
        } catch (ClassNotFoundException e) {
   
            System.out.println("驱动加载失败" + e);
        }
    }

2. 获取JDBC连接

	/**
	 * 获取连接1
	 */ 
	public Connection getConnection(String ip, String port, String userName, String password) throws SQLException {
   
	    String url = "jdbc:es://" + ip + ":" + port + "/";
	    return DriverManager.getConnection(url, userName, password);
	}

	/**
	 * 获取连接2
	 */ 
    public static Connection getConnection(String ip, Integer port, String userName, String password) throws SQLException {
   
        String address = "jdbc:es://" + ip + ":" + port + "/";
        Properties connectionProperties = new Properties();
        connectionProperties.put("user", userName);
        connectionProperties.put("password", password);
        return DriverManager.getConnection(address, connectionProperties);
    }

3. 获取索引名称(JDBC)

	/**
     * 获取数据库索引名称
     *
     * @param connection
     */
     public static void getTableName(Connection connection) {
   
        // 1、连接数据库, 控制台打印出这个数据库里面所有的表
        ResultSet resultSet = null;
        try {
   
            DatabaseMetaData databaseMetaData = connection.getMetaData();
            // 可用可不用
            String[] types = {
   "TABLE"};
            resultSet = databaseMetaData.getTables(connection.getCatalog(), null, "%", types);
            while (resultSet.next()) {
   
                //获取表名
                System.out.println("database : " + resultSet.getString(1) + " ==== table : " + resultSet.getString(3));
            }
        } catch (SQLException e) {
   
            System.out.println("获取数据库表名失败:" + e);
        } finally {
   
            close(resultSet);
        }
    }

4. 获取ElasticSearchClient

	/**
     * 获取HttpHost数组
     *
     * @return ttpHost[]
     */
    public static HttpHost[] toHttpHost(String hosts) {
   
        if (StringUtils.isEmpty(hosts)) {
   
            throw new RuntimeException("invalid elasticsearch configuration");
        }
        String[] hostArray = hosts.split(StringPool.COMMA);
        HttpHost[] httpHosts = new HttpHost[hostArray.length];
        HttpHost httpHost;
        for (int i = 0; i < hostArray.length; i++) {
   
            String[] strings = hostArray[i
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值