Java链接elasticsearch8.14.1

项目需求,需要实现海量数据的聚合、查询。因为职业生涯开发使用springboot微服务架构、Java开发的方式,所以,项目前期准备了elasticsearch、kibana、logstash的集群环境,作为服务端,用于数据的收集、存储;但是特定的客户端应用开发,依然沿用springboot微服务架构,采用java Api Client链接elastisearch ,实现数据查询、用户管理等相关定制功能。

本例讲解springboot架构访问elasticsearch。

一、maven依赖

<dependency>

<groupId>co.elastic.clients</groupId>

<artifactId>elasticsearch-java</artifactId>

<version>8.14.3</version>

</dependency>

<dependency>

<groupId>com.fasterxml.jackson.core</groupId>

<artifactId>jackson-core</artifactId>

<version>2.17.0</version>

</dependency>

<dependency>

<groupId>com.fasterxml.jackson.core</groupId>

<artifactId>jackson-databind</artifactId>

<version>2.17.0</version>

</dependency>

二、elastic search生成API KEY

前文讲解,服务端集成了elasticsearch8.14.1、kibana-8.14.1及Logstash-8.14.1,我们利用kibana的UI界面生成api key,为java对接做准备,如下图所示:

三、Java测试

Java版本要求8版本以上

public class EStest {

public static void main(String\[\] args) throws ElasticsearchException, IOException {

// URL and API key

String serverUrl = "http://192.168.225.3:9200";

String apiKey = "SUdLUjNaQUJUNFNVcVJpUmhfLXE6R1dienJhUU9SWmlseGNKQTM3WjM1dw==";

// Create the low-level client

RestClient restClient = RestClient

.builder(HttpHost.create(serverUrl))

.setDefaultHeaders(new Header\[\]{

new BasicHeader("Authorization", "ApiKey " + apiKey)

})

.build();

// Create the transport with a Jackson mapper

ElasticsearchTransport transport = new RestClientTransport(

restClient, new JacksonJsonpMapper());

// And create the API client

ElasticsearchClient esClient = new ElasticsearchClient(transport);

//要判断是否存在当前索引库

//判断索引是否已经存在

//创建一个对象用来传递索引名

GetIndexRequest existsRequest = new GetIndexRequest();

existsRequest.indices("products");//输入要判断的索引名字

//返回值是布尔类型,判断方法是client对象下indices()方法的exists方法,在这个方法里有索引的名字;

boolean exists = esClient.indices().exists(existsRequest,RequestOptions.DEFAULT);

if(exists){//进行判断返回值;

}

esClient.indices().create(c -> c.index("products"));

}

相关推荐
const_qiu16 分钟前
第四章 00:开篇 —— 从「会聊天」到「记得住、会干活、能协作」
java·开发语言·人工智能·python
Wang's Blog22 分钟前
Java 项目实战: 交友项目 - 个人资料管理的更新接口实现与坑
java·开发语言·交友
jonyleek26 分钟前
JVS数字底座私有化部署实践:Spring Cloud + K8S 实现文档平台开箱即用
elasticsearch·kubernetes·私有化部署·springcloud·minio·jvs企业文档·文档治理
Promising_GEO26 分钟前
GEE实战02期:从卫星波段开始:利用 Sentinel-2 自己计算 NDVI
java·sentinel·遥感·空间分析
大文说跨境32 分钟前
亚马逊多账号管理浏览器怎么选?云登/紫鸟/AdsPower 对比
java·前端·自动化
CoderYanger1 小时前
Java EE 进阶:4.Spring Web MVC 入门(第一弹)
java·开发语言·前端·spring·面试·java-ee·mvc
顽疲1 小时前
java springboot vue 养老系统源码详解:请假 care_leave 销假与床位停费日扣实践
java·vue.js·spring boot
XIAEE2 小时前
一个即时通讯项目是怎么长出来的:(Spring Boot 3 + Vue 3 微前端 + 悟空 IM + LiveKit)
java·spring
n87652 小时前
Playwright Java WEB UI 自动化实现框架与逻辑
java·前端·ui
Java_AI工程师2 小时前
Spring4 / SpringBoot1.x 老项目想接入 AI?不用升级框架!3 套无痛落地方案
java·人工智能·spring boot