栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

elasticsearch8.0 java客户端 <一>

elasticsearch8.0 java客户端 <一>

elasticsearch8.0 java连接客户端 <一>

前言

elasticsearch8.0 java客户端java连接es8.0es8.0创建索引es8.0获取索引es8.0删除索引es8.0创建doc

前言

本人在学习elasticsearch8.0时,因elasticsearch8.0缺少java文档,自己在摸索中学习es8.0 java。

elasticsearch8.0 java客户端

首先在es官网下载8.0,安装后,使用java调用es报错连接超时,es中提示
received plaintext http traffic on an https channel, closing connection Netty4HttpChannel
解决方法 因es8.0在安装时默认开启了SSL认证,在es安装根目录config/elasticsearch.yml文件修改

# Enable encryption for HTTP API client connections, such as Kibana, Logstash, and Agents
xpack.security.http.ssl:
  enabled: false
  keystore.path: certs/http.p12

将enabled改为false

java连接es8.0

在改好yml启动后,在使用官网
https://www.elastic.co/guide/en/elasticsearch/client/java-api-client/8.0/connecting.html
提供的连接demo连接时异常,后来测试好像改完yml异常就消失了,不知道什么原因

RestClient restClient = RestClient.builder(
                new HttpHost("localhost", 9200)).build();

        ElasticsearchTransport transport = new RestClientTransport(
                restClient, new JacksonJsonpMapper());

        ElasticsearchClient client = new ElasticsearchClient(transport);

在没测试之前使用

    private static final String clusterNodes = "127.0.0.1:9200";//es集群节点 
	//用户名
    private static final String account = "elastic";
	//密码
    private static final String passWord = "cs8I7+dQjh1BGwUaO_KM";

    public static ElasticsearchClient client;

    public static RestClientBuilder builder;

    public static RestClient restClient;

    public static ElasticsearchTransport transport;

    //有密码登录
    public static void main(String[] args) {
        try {
            HttpHost[] httpHosts = Arrays.stream(clusterNodes.split(",")).map(x -> {
                String[] hostInfo = x.split(":");
                return new HttpHost(hostInfo[0], Integer.parseInt(hostInfo[1]));
            }).toArray(HttpHost[]::new);

            final CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
            //设置账号密码
            credentialsProvider.setCredentials(
                    AuthScope.ANY, new UsernamePasswordCredentials(account, passWord));

            builder = RestClient.builder(httpHosts)
                    .setHttpClientConfigCallback(httpClientBuilder ->
                            httpClientBuilder
                                    .setDefaultCredentialsProvider(credentialsProvider));
			// Create the low-level client
            restClient = builder.build();
            // Create the transport with a Jackson mapper
            transport = new RestClientTransport(
                    restClient, new JacksonJsonpMapper());
            // And create the API client
            client = new ElasticsearchClient(transport);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                client.shutdown();
                transport.close();
                restClient.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

连接测试无问题

es8.0创建索引
 //创建索引并返回状态
 Boolean acknowledged = client.indices().create(c -> c.index("user")).acknowledged();
es8.0获取索引
GetIndexResponse getIndexResponse = client.indices().get(c -> c.index("user"));
es8.0删除索引
DeleteIndexResponse deleteIndexResponse = client.indices().delete(c -> c.index("user"));
es8.0创建doc
User user = new User("zhangsan", 18, "男");
String userJson = new Gson().toJson(user);

IndexResponse indexResponse = client.index(IndexRequest.of(x -> {
    x.id("10001");
    x.index("user");
    x.document(user);
    return x;
}));

以上方法不确定是否正确,本人自己测试无问题,文档中没有找到相应写法,如有问题,请大佬指正

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/745620.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号