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


}

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

相关推荐
weixin_BYSJ19871 小时前
【java项目分享】springboot阅读推荐平台10600
java·javascript·spring boot·python·django·flask·php
腾渊信息科技公司2 小时前
Spring Boot集成TDengine实战:工业时序数据存储选型与迁移方案
spring boot·后端·tdengine
zoyation2 小时前
Spring Boot集成OAuth2授权码模式的三种登录策略
java·spring boot·后端
xiaoqiMikko16 小时前
Dependabot 面板全绿,不代表你的 Tomcat 没洞
java·spring boot
摇滚侠17 小时前
SpringBoot 官网 阅读笔记 启用生产就绪功能 端点
spring boot·笔记·后端
evans在进步17 小时前
HashMap 为什么线程不安全?ConcurrentHashMap 如何解决?
java·spring boot·spring
Elasticsearch18 小时前
一个字段,覆盖所有模态:Elasticsearch 的 semantic 字段如何自动索引和搜索图像、音频、视频和 PDF
elasticsearch
Elastic 中国社区官方博客18 小时前
使用 Elasticsearch open inference API 对 OpenAI chat completions 进行支持
大数据·elasticsearch·搜索引擎·全文检索·jenkins
Elasticsearch21 小时前
jina-reranker-v3.5:通过混合 Attention 和自蒸馏实现更快的 Listwise Reranking
elasticsearch
Elasticsearch21 小时前
Elasticsearch 转型为 Agent 基础设施:混合搜索、长期记忆与工程化框架
elasticsearch