Elasticsearch-02 Java Client测试

前言

先上一个简单的Java客户端
后边再上springboot项目集成
这个没什么好说的,直接上代码了
不要问是怎么玩儿的,跟着官网教程 一步一步抄就好
官方参考代码
REST API
JAVA API
源码地址

pom.xml

        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-api</artifactId>
            <version>2.17.0</version>
        </dependency>

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.73</version>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.6</version>
        </dependency>

        <dependency>
            <groupId>co.elastic.clients</groupId>
            <artifactId>elasticsearch-java</artifactId>
            <version>7.17.0</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.12.3</version>
        </dependency>

java代码

  • 对象实例
package com.deao.test;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.Date;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class UserActionDTO {

    public Long userId;

    public Long schoolId;

    public String identifier;

    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    public Date timeActive;

    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    public Date timeLeave;

    public String phoneModel;

    public String accessPath;

    public String userType;

    public String url;

    public String version;

    public String sysVersion;

}

  • main方法
package com.deao.test;

import co.elastic.clients.elasticsearch.ElasticsearchClient;
import co.elastic.clients.elasticsearch.core.SearchResponse;
import co.elastic.clients.elasticsearch.core.search.Hit;
import co.elastic.clients.json.jackson.JacksonJsonpMapper;
import co.elastic.clients.transport.ElasticsearchTransport;
import co.elastic.clients.transport.rest_client.RestClientTransport;
import com.alibaba.fastjson.JSON;
import lombok.extern.log4j.Log4j2;
import org.apache.http.HttpHost;
import org.elasticsearch.client.HttpAsyncResponseConsumerFactory;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestClient;

import java.io.IOException;

@Log4j2
public class RestClientTest717 {

    private static final RequestOptions COMMON_OPTIONS;

    static {
        RequestOptions.Builder builder = RequestOptions.DEFAULT.toBuilder();

        // 默认缓存限制为100MB,此处修改为30MB。
        builder.setHttpAsyncResponseConsumerFactory(
                new HttpAsyncResponseConsumerFactory
                        .HeapBufferedResponseConsumerFactory(30 * 1024 * 1024));
        COMMON_OPTIONS = builder.build();
    }

    public static void main(String[] args) {

        // Create the low-level client
        RestClient restClient = RestClient.builder(new HttpHost("192.168.2.18", 9200))
            .build();
        // Create the transport with a Jackson mapper
        ElasticsearchTransport transport = new RestClientTransport(
                restClient, new JacksonJsonpMapper());
        // And create the API client - Synchronous blocking client
        ElasticsearchClient client = new ElasticsearchClient(transport);

        try {
//            // 创建索引 products
//            CreateIndexResponse products = client.indices().create(c -> c.index("products"));
//            // 创建索引 test-index
//            CreateIndexResponse createResponse = client.indices().create(
//                    new CreateIndexRequest.Builder()
//                            .index("test-index")
//                            .aliases("foo", aliasBuilder -> aliasBuilder.isWriteIndex(true))
//                            .build()
//            );
            SearchResponse<UserActionDTO> search = client.search(s -> s
                            .index("weiheng")
                            .query(q -> q
                                    .term(t -> t
                                            .field("userId")
                                            .value(v -> v.stringValue("1"))
                                    )),
                    UserActionDTO.class);

            for (Hit<UserActionDTO> hit: search.hits().hits()) {
                UserActionDTO source = hit.source();
                System.out.println(JSON.toJSONString(source));
            }
            // 关闭客户端
            restClient.close();
        } catch (IOException ioException) {
            // 异常处理。
        }
    }
}

测试结果

  • 读取索引 weiheng 里的数据内容
    在这里插入图片描述
  • 新增索引
    在这里插入图片描述
  • kibana新增数据
    在这里插入图片描述
    在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值