spring boot 集成es使用

pom添加依赖

我的es是7.17.3版本,spring boot是2.2.2.RELEASE版本,仅供参考:

复制代码
<!-- Elasticsearch RestHighLevelClient -->
<dependency>
    <groupId>org.elasticsearch.client</groupId>
    <artifactId>elasticsearch-rest-high-level-client</artifactId>
    <version>7.17.3</version>
    <exclusions>
        <exclusion>
            <artifactId>elasticsearch-rest-client</artifactId>
            <groupId>org.elasticsearch.client</groupId>
        </exclusion>
    </exclusions>
</dependency>
<dependency>
    <groupId>org.elasticsearch.client</groupId>
    <artifactId>elasticsearch-rest-client</artifactId>
    <version>7.17.3</version>
</dependency>
<dependency>
    <groupId>org.elasticsearch</groupId>
    <artifactId>elasticsearch</artifactId>
    <version>7.17.3</version>
</dependency>
本地构建es服务器:

想用连接es,需要有一个es服务器,我同样安装了kibana,用的是docker-compose的方式,docker-compose.yaml文件内容:

version: '3.7'

services:

elasticsearch:

image: docker.elastic.co/elasticsearch/elasticsearch:7.17.3

ports:

  • 9200:9200

volumes:

  • ./es/esdata:/usr/share/elasticsearch/data

  • ./es/logs:/usr/share/elasticsearch/logs

  • ./es/plugins:/usr/share/elasticsearch/plugins

environment:

  • discovery.type=single-node

  • xpack.security.enabled=false

  • ES_JAVA_OPTS=-Xms1g -Xmx10g

deploy:

replicas: 1

restart_policy:

condition: on-failure

resources:

limits:

cpus: '4'

memory: 2G

networks:

  • _test

kibana:

image: kibana:7.17.3

ports:

  • 5601:5601

environment:

depends_on:

  • elasticsearch

networks:

  • _test

networks:

_network:

external: true

driver: overlay

name: test

项目代码配置es的配置文件

连接es的ip和端口

复制代码
package com.susu.es;

import org.apache.http.HttpHost;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestHighLevelClient;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class ElasticsearchConfig {

    @Value("${elasticsearch.host}")
    private String host;
    @Value("${elasticsearch.port}")
    private String port;

    @Bean
    public RestHighLevelClient restHighLevelClient() {
       return new RestHighLevelClient(RestClient.builder(HttpHost.create(host+":"+port)).setRequestConfigCallback(requestConfigBuilder -> {
          return requestConfigBuilder.setConnectTimeout(5000 * 1000) // 连接超时(默认为1秒)
             .setSocketTimeout(6000 * 1000);// 套接字超时(默认为30秒)
       }));
    }


}
编写测试类进行连接:
复制代码
package com.susu.es;

import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.models.auth.In;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import org.elasticsearch.action.admin.indices.delete.DeleteIndexRequest;
import org.elasticsearch.action.index.IndexRequest;
import org.elasticsearch.action.index.IndexResponse;
import org.elasticsearch.action.search.SearchRequest;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.client.indices.*;
import org.elasticsearch.index.query.BoolQueryBuilder;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.SearchHit;
import org.elasticsearch.search.SearchHits;
import org.elasticsearch.search.builder.SearchSourceBuilder;
import org.elasticsearch.search.sort.SortOrder;
import org.elasticsearch.xcontent.XContentBuilder;
import org.elasticsearch.xcontent.XContentFactory;
import org.elasticsearch.xcontent.XContentType;
import org.json.JSONObject;
import org.junit.jupiter.api.Order;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import static cn.hutool.http.webservice.SoapUtil.createClient;
import static cn.hutool.json.XMLTokener.entity;

@RunWith(SpringRunner.class)
@SpringBootTest
@Slf4j
public class Test {

	@Autowired
	private RestHighLevelClient restHighLevelClient;


	@org.junit.Test
	public void test() throws IOException {
		CreateIndexRequest request = new CreateIndexRequest("message");
		CreateIndexResponse response = restHighLevelClient.indices().create(request, RequestOptions.DEFAULT);
		System.out.println(response.isAcknowledged());
	}


	@org.junit.Test
	public void testExistsMessageIndex() throws IOException {
		// 1.创建Request对象
		GetIndexRequest request = new GetIndexRequest("message");
		// 2.发送请求
		boolean exists = restHighLevelClient.indices().exists(request, RequestOptions.DEFAULT);
		// 3.输出
		System.err.println(exists ? "索引库已经存在!" : "索引库不存在!");
	}

	@org.junit.Test
	public void testDeleteMessageIndex() throws IOException {
		// 1.创建Request对象
		DeleteIndexRequest request = new DeleteIndexRequest("r_rideinfo");
		// 2.发送请求
		restHighLevelClient.indices().delete(request, RequestOptions.DEFAULT);
	}


}

已经连接成功,可以使用。

相关推荐
MacroZheng43 分钟前
还在用WebSocket实现即时通讯?试试MQTT吧,真香!
java·spring boot·后端
midsummer_woo1 小时前
基于springboot的IT技术交流和分享平台的设计与实现(源码+论文)
java·spring boot·后端
别惹CC3 小时前
Spring AI 进阶之路01:三步将 AI 整合进 Spring Boot
人工智能·spring boot·spring
Yusei_05233 小时前
迅速掌握Git通用指令
大数据·git·elasticsearch
柯南二号4 小时前
【Java后端】Spring Boot 集成 MyBatis-Plus 全攻略
java·spring boot·mybatis
javachen__5 小时前
SpringBoot整合P6Spy实现全链路SQL监控
spring boot·后端·sql
IT毕设实战小研11 小时前
基于Spring Boot 4s店车辆管理系统 租车管理系统 停车位管理系统 智慧车辆管理系统
java·开发语言·spring boot·后端·spring·毕业设计·课程设计
一只爱撸猫的程序猿12 小时前
使用Spring AI配合MCP(Model Context Protocol)构建一个"智能代码审查助手"
spring boot·aigc·ai编程
甄超锋12 小时前
Java ArrayList的介绍及用法
java·windows·spring boot·python·spring·spring cloud·tomcat
武昌库里写JAVA15 小时前
JAVA面试汇总(四)JVM(一)
java·vue.js·spring boot·sql·学习