elasticsearch java 客户端(client)连接es集群方式(官方详细文档,实测有效)

elasticsearch java 客户端api示例

参考官方文档,使用elasticsearch java客户端对es进行操作。

elasticsearch maven依赖

    <properties>
        <es.version>7.6.2</es.version>
        <gson.version>2.8.6</gson.version>
    </properties>
    
     <!-- json start-->
        <!-- https://mvnrepository.com/artifact/com.google.code.gson/gson -->
        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
            <version>${gson.version}</version>
        </dependency>
        <!--json end-->

        <!--elasticsearch start-->
        <dependency>
            <groupId>org.elasticsearch.client</groupId>
            <artifactId>transport</artifactId>
            <version>${es.version}</version>
        </dependency>
        <!--elasticsearch end-->

elasticsearch java 客户端(client)连接elasticsearch集群并写入数据

package com.troll.bigdata.component.example.elasticsearch.example;

import com.google.gson.Gson;
import org.elasticsearch.action.index.IndexResponse;
import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.transport.TransportAddress;
import org.elasticsearch.common.xcontent.XContentType;
import org.elasticsearch.transport.client.PreBuiltTransportClient;

import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;

public class ConnectES {
    public static void main(String[] args) {

        /**
         * 官方参考链接
         * https://www.elastic.co/guide/en/elasticsearch/client/java-api/current/transport-client.html
         */
        ////// 读取ES配置
        String host = "localhost";
        int port = 8300;

        // 打印es连接信息
        System.out.println("host:" + host + ",port:" + port);

//        // 获取settings
        Settings settings = Settings.builder()
                .put("client.transport.sniff", false)
                .put("cluster.name", "troll_es_dev").build();

        // 客户端对象
        TransportClient client = null;

        // 建立ES连接
        try {
            client = new PreBuiltTransportClient(settings)
                    .addTransportAddress(new TransportAddress(InetAddress.getByName(host), port));
        } catch (UnknownHostException e) {
            e.printStackTrace();
        }

        // json拼装
        String json = "{" +
                "\"uid\":1,"+
                "\"user\":\"kimchy\"," +
                "\"postDate\":\"2013-01-30\"," +
                "\"message\":\"trying out Elasticsearch\"" +
                "}";

        // 执行api
        IndexResponse response = client.prepareIndex("twitter", "_doc","1")
                .setSource(json, XContentType.JSON)
                .get();

        // 提取返回值,放入map,便于查看
        Map<String,Object> rep = new HashMap<String, Object>();
        // Index name
        rep.put("_index",response.getIndex());
        // Type name
        rep.put("_type",response.getType());
        // Document ID (generated or not)
        rep.put("_id",response.getId());
        // Version
        rep.put("_version",response.getVersion());
        // status has stored current instance statement.
        rep.put("status",response.status().getStatus());

        // 打印返回值,转json是为了方便查看
        Gson gson = new Gson();
        System.out.println(gson.toJson(rep));

        // 释放客户端
        client.close();

    }
}

执行效果:

host:localhost,port:8300
{"_index":"twitter-new","_type":"_doc","_id":"1","_version":5,"status":200}

** 查看elasticsearch java客户端插入的数据 **

# 查看索引数据
GET /twitter/_doc/1

执行效果如下:

{
“_index” : “twitter-new”,
“_type” : “_doc”,
“_id” : “1”,
“_version” : 5,
“_seq_no” : 6,
“_primary_term” : 1,
“found” : true,
“_source” : {
“uid” : 1,
“user” : “kimchy”,
“postDate” : “2013-01-30”,
“message” : “trying out Elasticsearch”
}
}

从反馈结果看,数据已插入ES。

参考

猜你喜欢

转载自blog.csdn.net/myhes/article/details/106081982