目录

  • spring boot集成ES
  • ElasticSearchConfig
  • 测试文档的基本操作

Elasticsearch Clients 文档

spring boot集成ES

Java REST Client [7.10] » Java High Level REST Client
一般用高级的客户端

  • 找到原生依赖
    <dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-high-level-client</artifactId><version>7.10.2</version></dependency>
  • 找对象
RestHighLevelClient client = new RestHighLevelClient(RestClient.builder(new HttpHost("localhost", 9200, "http"),new HttpHost("localhost", 9201, "http")));//用完关闭
client.close();

配置基本项目问题: 一定保证, 我们导入的依赖和我们的es版本一致

ElasticSearchConfig

  • ElasticSearchConfig
/*** 找到对象* 放到Spring里面就可以用了*** @author mxz*/
@Configuration
public class ElasticSearchConfig {@Beanpublic RestHighLevelClient restHighLevelClient() {RestHighLevelClient client = new RestHighLevelClient(RestClient.builder(new HttpHost("localhost", 9200, "http")));
//                        new HttpHost("localhost", 9201, "http")));return client;}}
  • 索引测试代码
package cn.com.codingce;import cn.com.codingce.config.ElasticSearchConfig;
import org.elasticsearch.action.admin.indices.delete.DeleteIndexRequest;
import org.elasticsearch.action.support.master.AcknowledgedResponse;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.client.indices.CreateIndexRequest;
import org.elasticsearch.client.indices.CreateIndexResponse;
import org.elasticsearch.client.indices.GetIndexRequest;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.test.context.SpringBootTest;import java.io.IOException;@SpringBootTest
class CodingceEsApiApplicationTests {@Autowired@Qualifier("restHighLevelClient")private RestHighLevelClient client;@Testvoid contextLoads() throws IOException {// 创建索引CreateIndexRequest request = new CreateIndexRequest("codingce_index");// 执行创建请求, IndicesClient, 请求后获得响应CreateIndexResponse createIndexResponse = client.indices().create(request, RequestOptions.DEFAULT);System.out.println(createIndexResponse);}//测试获取索引@Testvoid testExistIndex() throws IOException {GetIndexRequest request = new GetIndexRequest("codingce_index");boolean exists = client.indices().exists(request, RequestOptions.DEFAULT);System.out.println(exists);}//测试删除索引@Testvoid testDeleteIndex() throws IOException {DeleteIndexRequest request = new DeleteIndexRequest("codingce_index");AcknowledgedResponse delete = client.indices().delete(request, RequestOptions.DEFAULT);System.out.println(delete.isAcknowledged());}}

测试文档的基本操作

  • 实体类
package cn.com.codingce.pojo;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.stereotype.Component;/*** @author mxz*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Component
public class User {private String name;private int age;
}
  • 测试代码
//测试添加文档@Testvoid testAddDocument() throws IOException {User u = new User("全栈自学社区", 3);// 创建请求IndexRequest request = new IndexRequest("codingce_index");// 规则 put codingce_index/_doc/1request.id("1");// 1srequest.timeout(TimeValue.timeValueSeconds(1));// 将我们的数据放入请求   jsonIndexRequest source = request.source(JSON.toJSONString(u), XContentType.JSON);// 客户端发送请求IndexResponse index = client.index(request, RequestOptions.DEFAULT);System.out.println(index.toString());System.out.println(index.status()); // 成功就是 CREATE}// 获取文档 先判断是否存在@Testvoid testIsExists() throws IOException {GetRequest request = new GetRequest("codingce_index", "1");// 不获取返回的_source 的上下文request.fetchSourceContext(new FetchSourceContext(false));request.storedFields("_none_");boolean exists = client.exists(request, RequestOptions.DEFAULT);System.out.println(exists);}// 判断完 存在则获取文档信息@Testvoid testGetDocument() throws IOException {GetRequest request = new GetRequest("codingce_index", "1");GetResponse response = client.get(request, RequestOptions.DEFAULT);System.out.println(response.getSourceAsString());System.out.println(response);}@Testvoid testUpdateDocument() throws IOException {UpdateRequest updateRequest = new UpdateRequest("codingce_index", "1");updateRequest.timeout(TimeValue.timeValueSeconds(1));User u = new User("全栈自学社区", 4);updateRequest.doc(JSON.toJSONString(u), XContentType.JSON);UpdateResponse updateResponse = client.update(updateRequest, RequestOptions.DEFAULT);System.out.println(updateResponse);System.out.println(updateResponse.status());}@Testvoid testDeleteDocument() throws IOException {DeleteRequest deleteRequest = new DeleteRequest("codingce_index", "1");deleteRequest.timeout(TimeValue.timeValueSeconds(1));DeleteResponse deleteResponse = client.delete(deleteRequest, RequestOptions.DEFAULT);System.out.println(deleteResponse.toString());System.out.println(deleteResponse.status());}//批量插入@Testvoid testAddDocuments() throws IOException {BulkRequest bulkRequest = new BulkRequest();bulkRequest.timeout(TimeValue.timeValueSeconds(10));List<User> list = new ArrayList<>();list.add(new User("全栈自学社区1", 1));list.add(new User("全栈自学社区2", 2));list.add(new User("全栈自学社区3", 3));list.add(new User("全栈自学社区4", 4));list.add(new User("全栈自学社区5", 5));list.add(new User("全栈自学社区6", 6));list.add(new User("全栈自学社区7", 7));list.add(new User("全栈自学社区8", 8));for (int i = 0; i < list.size(); i++) {// 批量更新和批量删除, 就在这里修改对应的请求就可以了bulkRequest.add(new IndexRequest("codingce_index").id("" + (i + 1)).source(JSON.toJSONString(list.get(i)), XContentType.JSON));}BulkResponse bulkResponse = client.bulk(bulkRequest, RequestOptions.DEFAULT);System.out.println(bulkResponse.toString());System.out.println(bulkResponse.hasFailures());}// 批量查询// SearchRequest    搜索请求// SearchSourceBuilder  条件构造@Testvoid testSearchAll() throws IOException {SearchRequest searchRequest = new SearchRequest(ES_INDEX);// 查询条件 可以使用 QueryBuilders 工具类// termQuery 精确匹配
//        TermQueryBuilder termQueryBuilder = QueryBuilders.termQuery("name", "全栈自学社区1");MatchAllQueryBuilder matchAllQueryBuilder = QueryBuilders.matchAllQuery();// 构建搜索条件SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();searchSourceBuilder.query(matchAllQueryBuilder);
//        searchSourceBuilder.timeout(TimeValue.timeValueSeconds(60));searchSourceBuilder.timeout(new TimeValue(60, TimeUnit.SECONDS));searchSourceBuilder.from();searchSourceBuilder.size();searchRequest.source(searchSourceBuilder);SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);System.out.println(JSON.toJSONString(searchResponse.getHits()));for (SearchHit hit : searchResponse.getHits().getHits()) {System.out.println(hit.getSourceAsMap());}}

文章已上传gitee https://gitee.com/codingce/hexo-blog
项目地址: https://github.com/xzMhehe/codingce-java

【Java进阶】Spring Boot集成ES相关推荐

  1. ElasticSearch——Spring Boot 集成 ES 操作详解

    文章目录 ElasticSearch--Spring Boot 集成 ES 操作详解 1.SpringBoot 集成 ES 2.索引的API操作详解 3.文档的API操作详解 ElasticSearc ...

  2. Spring Boot 集成 Elasticsearch 实战

    今天讲解下如何使用 Spring Boot 结合 ES. 可以在 ES 官方文档中发现,ES 为 Java REST Client 提供了两种方式的 Client:Java Low Level Cli ...

  3. 【Spring】Springb boot 集成 Es 7.6.0

    1.概述 Springb boot 集成 Es 7.6.0 ,引入一下包 <dependency><groupId>org.springframework.boot</g ...

  4. Elasticsearch+Spring Boot集成实践

    ELK-技术栈 Elasticsearch 简介 ​ Elasticsearch 是一个分布式.RESTful 风格的搜索和数据分析引擎,能够解决不断涌现出的各种用例. 作为 Elastic Stac ...

  5. Spring Boot 集成 ElasticSearch,实现高性能搜索

    1.ElasticSearch介绍 Elasticsearch 是java开发的,基于 Lucene 的搜索引擎.它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful Web接口.Elast ...

  6. Spring Boot集成Swagger导入YApi@无界编程

    接口APi开发现状 现在开发接口都要在类似YApi上写文档,这样方便不同的团队之间协作,同步更新接口,提高效率. 但是如果接口很多,你一个个手工在YApi去录入无疑效率很低. 如果是使用Spring ...

  7. 6.3 Spring Boot集成mongodb开发

    6.3 Spring Boot集成mongodb开发 本章我们通过SpringBoot集成mongodb,Java,Kotlin开发一个极简社区文章博客系统. 0 mongodb简介 Mongo 的主 ...

  8. Spring Boot集成Hazelcast实现集群与分布式内存缓存

    2019独角兽企业重金招聘Python工程师标准>>> Hazelcast是Hazelcast公司开源的一款分布式内存数据库产品,提供弹性可扩展.高性能的分布式内存计算.并通过提供诸 ...

  9. Spring Boot 集成 Swagger 生成 RESTful API 文档

    原文链接: Spring Boot 集成 Swagger 生成 RESTful API 文档 简介 Swagger 官网是这么描述它的:The Best APIs are Built with Swa ...

最新文章

  1. 如何在C ++中从容器中删除元素
  2. Kamailio v4.4.6 发布,开源 SIP 服务器
  3. curl怎么输出赋值_python怎么实现循环
  4. jmeter 做ip欺骗遇到的坑
  5. python 字符串分割_python中分割字符串split切割并选择输出 逐行读取文件后字符串拼接...
  6. 数学概念——J - 数论,质因数分解
  7. html表单转换文档代码,把HTML表单提交的数据转化成XML文件 (转)
  8. DeFi借贷协议FLUX和比原链(BTM)达成全面战略合作协议,支持BTM借贷及挖矿
  9. 在Ubuntu10.10下升级内核到2.6.36使用systemtap
  10. 81章 老子1章到_三曜道长解读道德经: 信言不美 第81章
  11. 批量检测百度云分享链接有效性方法
  12. 设计师和程序员必备:全世界最著名的 icon 网站都在这了
  13. 获取多个字符串公共的前缀部分
  14. H5网页如何在微信中自定义分享链接
  15. echarts仪表盘
  16. html弹出框播放视频
  17. 发现百度百科的cookie更容易理解【手动滑稽】
  18. Dubbo框架整体认知
  19. TDD系列3-TDD过程实例-保龄球单局积分算法
  20. zcmu 1376 天天跑酷

热门文章

  1. 决赛评委阵容重磅公布!6万大奖,超分辨率图像性能挑战赛最后召集令!
  2. 向预训练进一步:掩码式非自回归模型训练
  3. 回归分析残差不满足正态分布_线性回归思路梳理!精华必看!
  4. python3 音乐播放器_python3 音乐播放器
  5. Pinpoint【环境搭建 01】JDK\HBase\Pinpoint Collector+Web 最新版 2.3.3 安装配置运行验证及脚本文件分享(避坑指南捷径指北)
  6. oracle进城有哪些,oracle主要进程详解
  7. php socket 握手,python Socket之客户端和服务端握手详细介绍
  8. Tomcat——访问错误[Invalid character found in method name. HTTP method names must be tokens]解决方案
  9. Spring Boot——游戏成就系统设计DEMO
  10. JS特效——黑客效果JS代码(摘取)