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);
	}


}

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

相关推荐
Flittly17 小时前
【AgentScope Java新手村系列】(14)人机交互
java·spring boot·spring
Flynt2 天前
从Spring Boot 4.0升到4.1,我在Maven和gRPC上栽了跟头
java·spring boot·后端
武子康3 天前
调查研究-197 FAISS vs Elasticsearch 全面对比:从向量检索、全文搜索到 RAG 选型指南
人工智能·elasticsearch·agent
掉鱼的猫3 天前
Spring Boot → Solon 注解迁移实战指南:一张对照表说清楚
java·spring boot
人活一口气3 天前
Spring Boot与AIGC的完美结合:从零搭建智能内容生成平台
java·spring boot·aigc
Elasticsearch4 天前
Elasticsearch ES|QL:现已支持视图、子查询和读取时模式定义
elasticsearch
java小白小6 天前
SpringBoot(01): 初识SpringBoot,从Spring的痛点说起
spring boot
Elasticsearch6 天前
Kibana 中的 SNMP 拓扑数据:从采集到 Canvas
elasticsearch
用户3169353811837 天前
如何从零编写一个 Spring Boot Starter
spring boot
程序员晓琪7 天前
约定大于配置:基于 Java 包名自动生成 API 版本路由的最佳实践
java·spring boot·后端