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


}

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

相关推荐
程序员徐师兄1 小时前
Java 基于 SpringBoot 的校园外卖点餐平台微信小程序(附源码,部署,文档)
java·spring boot·微信小程序·校园外卖点餐·外卖点餐小程序·校园外卖点餐小程序
chengpei1471 小时前
chrome游览器JSON Formatter插件无效问题排查,FastJsonHttpMessageConverter导致Content-Type返回不正确
java·前端·chrome·spring boot·json
Q_27437851092 小时前
springboot基于微信小程序的周边游小程序
spring boot·微信小程序·小程序
zfj3212 小时前
学技术学英文:elasticsearch 的数据类型
elasticsearch·数据类型·复杂数据类型
计算机学姐2 小时前
基于微信小程序的民宿预订管理系统
java·vue.js·spring boot·后端·mysql·微信小程序·小程序
奈葵3 小时前
Spring Boot/MVC
java·数据库·spring boot
落霞的思绪3 小时前
Redis实战(黑马点评)——涉及session、redis存储验证码,双拦截器处理请求
spring boot·redis·缓存
liuyunshengsir4 小时前
Spring Boot 使用 Micrometer 集成 Prometheus 监控 Java 应用性能
java·spring boot·prometheus
何中应4 小时前
Spring Boot中选择性加载Bean的几种方式
java·spring boot·后端
2013crazy5 小时前
Java 基于 SpringBoot+Vue 的校园兼职平台(附源码、部署、文档)
java·vue.js·spring boot·兼职平台·校园兼职·兼职发布平台