1.引入maven依赖

         <dependency><groupId>org.glassfish</groupId><artifactId>jakarta.json</artifactId><version>2.0.1</version></dependency><dependency><groupId>co.elastic.clients</groupId><artifactId>elasticsearch-java</artifactId><version>8.4.1</version></dependency><dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-client</artifactId><version>8.4.1</version></dependency>

2.application.yml添加配置

spring:elasticsearch:rest:uris: 127.0.0.1:9200 #esusername: elasticpassword: ******

3.编写config文件

package com.example.demo.config;import co.elastic.clients.elasticsearch.ElasticsearchClient;
import co.elastic.clients.json.jackson.JacksonJsonpMapper;
import co.elastic.clients.transport.ElasticsearchTransport;
import co.elastic.clients.transport.rest_client.RestClientTransport;
import org.apache.http.HttpHost;
import org.apache.http.auth.AuthScope;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.CredentialsProvider;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.impl.client.BasicCredentialsProvider;
import org.apache.http.impl.nio.client.HttpAsyncClientBuilder;
import org.apache.http.impl.nio.reactor.IOReactorConfig;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestClientBuilder;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.util.StringUtils;@Configuration
public class ElasticSearchConfig {@Value("${spring.elasticsearch.rest.uris}")private String hosts;@Value("${spring.elasticsearch.rest.username}")private String userName;@Value("${spring.elasticsearch.rest.password}")private String passWord;@Beanpublic ElasticsearchClient elasticsearchClient(){HttpHost[] httpHosts = toHttpHost();// 无验证信息//RestClient restClient = RestClient.builder(httpHosts).build();// 有验证信息final CredentialsProvider credentialsProvider = new BasicCredentialsProvider();credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials(userName, passWord));RestClientBuilder builder = RestClient.builder(httpHosts);builder.setRequestConfigCallback(new RestClientBuilder.RequestConfigCallback() {@Overridepublic RequestConfig.Builder customizeRequestConfig(RequestConfig.Builder requestConfigBuilder) {return requestConfigBuilder.setSocketTimeout(60000).setConnectTimeout(5000);}});builder.setHttpClientConfigCallback(new RestClientBuilder.HttpClientConfigCallback() {@Overridepublic HttpAsyncClientBuilder customizeHttpClient(HttpAsyncClientBuilder httpAsyncClientBuilder) {return httpAsyncClientBuilder.setDefaultCredentialsProvider(credentialsProvider);}});RestClient restClient = builder.build();// Create the transport with a Jackson mapperElasticsearchTransport transport = new RestClientTransport(restClient,new JacksonJsonpMapper());// And create the API clientreturn new ElasticsearchClient(transport);}private HttpHost[] toHttpHost() {if (!StringUtils.hasLength(hosts)) {throw new RuntimeException("invalid elasticsearch configuration. elasticsearch.hosts不能为空!");}// 多个IP逗号隔开String[] hostArray = hosts.split(",");HttpHost[] httpHosts = new HttpHost[hostArray.length];HttpHost httpHost;for (int i = 0; i < hostArray.length; i++) {String[] strings = hostArray[i].split(":");httpHost = new HttpHost(strings[0], Integer.parseInt(strings[1]), "http");httpHosts[i] = httpHost;}return httpHosts;}}

启动demo项目,通过控制台日志查看是否能够正常连接es。

4.在DemoApplicationTests编写简单测试操作es。

@SpringBootTest
@Slf4j
class DemoApplicationTests {@Autowiredprivate ElasticsearchClient client;@Testpublic void createTest() throws IOException {log.info("创建索引");//写法比RestHighLevelClient更加简洁CreateIndexResponse indexResponse = client.indices().create(c -> c.index("user"));log.info(String.valueOf(indexResponse));}@Testpublic void getCompanyList() throws IOException {log.info("查询索引"); GetIndexResponse getIndexResponse = client.indices().get(i -> i.index("user"));log.info(String.valueOf(getIndexResponse));}@Testpublic void existsTest() throws IOException {log.info("测试index是否存在");BooleanResponse booleanResponse = client.indices().exists(e -> e.index("user"));log.info(String.valueOf(booleanResponse.value()));}@Testpublic void userInsert() throws IOException {log.info("user信息插入");//创建user列表List<User> users = new ArrayList<>();User user = new User();user.setId("18");user.setName("李三");user.setAge(13);user.setSex("男");users.add(user);List<BulkOperation> bulkOperations = new ArrayList<>();//将user中id作为es id,也可不指定id es会自动生成idusers.forEach(a -> bulkOperations.add(BulkOperation.of(b -> b.index(c -> c.id(a.getId()).document(a)))));client.bulk(x ->x.index("user").operations(bulkOperations));}}

springboot整合elasticsearch8相关推荐

  1. Springboot整合ES8(Java API Client)

    在 Elasticsearch7.15版本之后,Elasticsearch官方将它的高级客户端 RestHighLevelClient标记为弃用状态.同时推出了全新的 Java API客户端 Elas ...

  2. SpringBoot第九篇: springboot整合Redis

    这篇文章主要介绍springboot整合redis,至于没有接触过redis的同学可以看下这篇文章:5分钟带你入门Redis. 引入依赖: 在pom文件中添加redis依赖: <dependen ...

  3. es springboot 不设置id_原创 | 一篇解决Springboot 整合 Elasticsearch

    ElasticSearch 结合业务的场景,在目前的商品体系需要构建搜索服务,主要是为了提供用户更丰富的检索场景以及高速,实时及性能稳定的搜索服务. ElasticSearch是一个基于Lucene的 ...

  4. springboot整合shiro使用shiro-spring-boot-web-starter

    此文章仅仅说明在springboot整合shiro时的一些坑,并不是教程 增加依赖 <!-- 集成shiro依赖 --> <dependency><groupId> ...

  5. db2 springboot 整合_springboot的yml配置文件通过db2的方式整合mysql的教程

    springboot整合MySQL很简单,多数据源就master,slave就行了,但是在整合DB2就需要另起一行,以下是同一个yml文件 先配置MySQL,代码如下 spring: datasour ...

  6. 九、springboot整合rabbitMQ

    springboot整合rabbitMQ 简介 rabbitMQ是部署最广泛的开源消息代理. rabbitMQ轻量级,易于在内部和云中部署. 它支持多种消息传递协议. RabbitMQ可以部署在分布式 ...

  7. 八、springboot整合Spring Security

    springboot整合Spring Security 简介 Spring Security是一个功能强大且可高度自定义的身份验证和访问控制框架.它是保护基于Spring的应用程序的事实标准. Spr ...

  8. 六、springboot整合swagger

    六.springboot整合swagger 简介 swagger 提供最强大,最易用的工具,以充分利用OpenAPI规范. 官网 : https://swagger.io/ 准备工作 pom.xml ...

  9. SpringBoot整合mybatis、shiro、redis实现基于数据库的细粒度动态权限管理系统实例(转)...

    SpringBoot整合mybatis.shiro.redis实现基于数据库的细粒度动态权限管理系统实例 shiro 目录(?)[+] 前言 表结构 maven配置 配置Druid 配置mybatis ...

最新文章

  1. golang 变量定义和初始化
  2. 做一个完整的Java Web项目太难了,因为这些你不会!
  3. 厌倦了SWT TABLE,何不试试KTABLE?
  4. Linq Coding -- Part Eight (Equals Topic)
  5. 高精度(压位+判负数+加减乘+读写)
  6. 网络中最常用的网络命令(5)-完整参数
  7. mv单位是什么意思_mv单位(mv是什么意思单位)
  8. 如何实现不规则的Div外部形状?
  9. Python 中 'unicodeescape' codec can't decode bytes in position XXX: trun错误解决方案
  10. 面试了一个 37 岁程序员,让我有所触动,35岁以上的程序员该何去何从?
  11. EAX、ECX、EDX、EBX等寄存器的作用
  12. Thunar文件管理器新增一个使用root权限打开当前目录或者文件夹
  13. r语言中的多因素方差分析_R中的因素
  14. Android11.0(R) HAL 相机集成水印算法+多帧算法
  15. objective-c 语法快速过(5)
  16. 游戏文化VS文化游戏(第一篇)
  17. 一招教你如何搜索国内各大网盘资源
  18. iOS16灵动岛横屏视频播放适配(ZFPlayer)
  19. 债券质押式正逆回购详细操作指南
  20. 动态库def文件的使用

热门文章

  1. 【学习方法】关于记忆方法的思考,如何快速、短时、高效地记忆内容?
  2. 黄金期货的交易原则有哪些?
  3. 英国电信公布2016第一财季业绩财报 营收76亿美元
  4. 分布式系统:Spark和Memcache
  5. 曝光一个骗子,大家小心一点,骗子QQ是493169239和707661812,842086828
  6. windows下补丁手动下载和安装
  7. 智慧网点解决方案 | 助推银行“营销-销售-服务”一体化建设
  8. 【阿朱说】产业互联网、消费互联网、工业互联网到底有啥联系
  9. 人类智擒超高能中微子探秘宇宙黑洞
  10. 安卓学习专栏——安卓报错android.support.v4.widget.SwipeRefreshLayout飘红