目录

1.简介

2.依赖。pom.xml

3.配置类ESConfig

4.yml配置文件

5.实体类,省略不写了,根据自己的业务定义实体类

6.Client的使用

7.有问题留言,谢谢


1.简介

相信使用springboot 2.0以下的同学都遇到这个坑了。

spring-boot-starter-data-elasticsearch 不支持springboot 版本2.0以下

所以。。。只能自己写client来操作ElasticSearch了

2.依赖。pom.xml

关于ElasticSearch与Springboot的整合,我经历了2次因为reimport线上的包导致项目跑起来报错了。

所以,建议大家能在调试成功后把这部分jar包单独分开。

其中swagger也可以不加入到依赖

<properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><java.version>1.8</java.version><elasticsearch.version>6.5.1</elasticsearch.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><!-- Elasticsearch核心依赖包 --><dependency><groupId>org.elasticsearch.client</groupId><artifactId>transport</artifactId><version>${elasticsearch.version}</version></dependency><!-- 日志依赖 --><!-- ===================== @Getter @Setter @Slf4j @Data ======================== --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-beans</artifactId><version>4.3.12.RELEASE</version></dependency><dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>2.2.2</version></dependency><dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger-ui</artifactId><version>2.2.2</version></dependency></dependencies>

3.配置类ESConfig

package com.example.elatiscsearch;import org.apache.commons.lang.StringUtils;
import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.transport.TransportAddress;
import org.elasticsearch.transport.client.PreBuiltTransportClient;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;import java.net.InetAddress;
import java.net.UnknownHostException;/*** @program: elatiscsearch* @description: config* @author: Irving Wei* @create: 2018-12-06 11:00**/
@Configuration
public class ESConfig {@Value("${elasticsearch.host}")private String host;private int port;@Value("${elasticsearch.port}")private void setPort(String str){if(StringUtils.isNotBlank(str)){port = Integer.valueOf(str);}}@Value("${elasticsearch.cluster-name}")private String clusterName;@Beanpublic TransportClient client() throws UnknownHostException {//es集群连接TransportAddress node = new TransportAddress(InetAddress.getByName(host),port);//es集群配置(自定义配置) 连接自己安装的集群名称Settings settings = Settings.builder().put("cluster.name", clusterName).build();PreBuiltTransportClient client = new PreBuiltTransportClient(settings);client.addTransportAddress(node);return client;}
}

4.yml配置文件

elasticsearch:host: #es的IPport: 9300cluster-name: my-application  #这里在es的配置文件查,要保证cluster-name与配置文件相同

5.实体类,省略不写了,根据自己的业务定义实体类

6.Client的使用

@Autowired
private TransportClient client;public void function(){// 单一查询GetResponse result = this.client.prepareGet("index_name", "type_name", id).get();// 新增// entityMap 是一个map参数,将要保存的实体转换为map类型IndexResponse result = this.client.prepareIndex("index_name", "type_name").setSource(entityMap).get();// 删除DeleteResponse result = this.client.prepareDelete("index_name", "type_name",         id).get();// 修改// dataMap: 把需要修改的数据,以key value的形式封装到一个map中UpdateRequestBuilder urb = client.prepareUpdate("index_name", "type_name", id);urb.setDoc(dataMap);urb.execute().actionGet();// 复合查询BoolQueryBuilder boolQuery = QueryBuilders.boolQuery();boolQuery.must(QueryBuilders.matchQuery("filed", value));RangeQueryBuilder rangeQuery =     QueryBuilders.rangeQuery("word_count").from(gtWordCount);if (ltWordCount != null && ltWordCount > 0) {rangeQuery.to(ltWordCount);}boolQuery.filter(rangeQuery);SearchRequestBuilder builder = this.client.prepareSearch("index_name").setTypes("type_name").setSearchType(SearchType.DFS_QUERY_THEN_FETCH).setQuery(boolQuery).setFrom(0).setSize(10);SearchResponse response = builder.get();List<Object> result = new ArrayList<>();for (SearchHit hit : response.getHits()) {try {result.add(hit.getSourceAsMap());} catch (Exception e) {e.printStackTrace();}}}

7.有问题留言,谢谢

6点下班了,我今天一定要准时走,耶稣也拦不住我.gif,手动狗头!

Springboot 整合ElasticSearch(Client篇)相关推荐

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

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

  2. 【数据篇】SpringBoot 整合 Elasticsearch 实践数据搜索引擎

    写在最前 Elasticsearch 入门必读 Docker安装ELK Spring Data Elasticsearch 参考文档 版本选择 Spring Data Release Train Sp ...

  3. 【十九】springboot整合ElasticSearch实战(万字篇)

    本章开始学习springboot整合ElasticSearch 7.X版本并通过小demo实现基本的增删改查.实现如下案例: 1.当向数据新增一个商品信息时,同时向rabbitMQ发起消息(异步实现) ...

  4. SpringBoot整合ElasticSearch实现多版本的兼容

    前言 在上一篇学习SpringBoot中,整合了Mybatis.Druid和PageHelper并实现了多数据源的操作.本篇主要是介绍和使用目前最火的搜索引擎ElastiSearch,并和Spring ...

  5. SpringBoot整合Elasticsearch详细步骤以及代码示例(附源码)

    准备工作# 环境准备# JAVA版本 Copy java version "1.8.0_121" Java(TM) SE Runtime Environment (build 1. ...

  6. 七、SpringBoot整合elasticsearch集群

    @Author : By Runsen @Date : 2020/6/12 作者介绍:Runsen目前大三下学期,专业化学工程与工艺,大学沉迷日语,Python, Java和一系列数据分析软件.导致翘 ...

  7. SpringBoot整合elasticsearch (java整合es)

    欢迎大家进群,一起探讨学习 微信公众号,每天给大家提供技术干货 博主技术笔记 博主网站地址1 博主网站地址2 博主开源微服架构前后端分离技术博客项目源码地址,欢迎各位star SpringBoot整合 ...

  8. Springboot整合Elasticsearch(High-level-Client)

    前言 通过学习Elasticsearch一小段时间来稍微认识了一点ES的体系架构.发现ES最大的坑就是版本兼容性问题了-在整合Springboot也不例外,但是,有一种方式能较好的解决-通过restc ...

  9. Springboot 整合ElasticSearch 常用的插入查询,模糊查询,范围查询

    前言 本来该篇教程就应该写到 Springboot 整合 ElasticSearch 入门教学必看 https://blog.csdn.net/qq_35387940/article/details/ ...

  10. Springboot 整合 ElasticSearch 入门教学必看

    ElasticSearch 相比搜到这篇文章的人,都已经有过对它的了解, 一种流行的企业级搜索引擎,是一个分布式,高性能.高可用.可伸缩的搜索和分析系统. 那么用我粗俗的言语来说,它就是提供一个存储数 ...

最新文章

  1. bzoj1095: [ZJOI2007]Hide 捉迷藏 线段树维护括号序列 点分治 链分治
  2. opencv 行与列
  3. SVN linux 服务器端配置
  4. Openstack平台搭建(先电版)
  5. VisualSVN Server Manager创建版本库以及TortoiseSVN的使用
  6. python 访问sas 逻辑库,SAS | 逻辑库和SAS数据集
  7. 全国高校计算机考试用的什么版本,全国高校计算机等级考试与全国计算机等级考试,有区别吗...
  8. 23种设计模式(二十三)行为变化之访问器
  9. Java - HashMap源码解析
  10. 分享一个 电子书下载网站 支持 ebook pdf azw3 epub mobi
  11. CSS 边框 border属性
  12. 塑形管理小程序开发(二)-原型图绘制
  13. 啮齿类动物大尺度功能网络
  14. PCB板设计布局原则有哪些?
  15. Android scroller控件,Android Scroller完全解析
  16. android功能机,诺基亚正式发布了4款安卓智能手机和一款能上网的功能机
  17. android下开启AP热点
  18. 郭秀闲:我如何看待埃维诺的未来发展
  19. 一个Activity左右分别显示一个ListFragment
  20. Libvirt网络管理

热门文章

  1. split在python中什么意思_python 正则表达式 split(python里split什么意思)
  2. 深圳科陆集团2015校招软件开发笔试题
  3. 【倾斜摄影建模技术交流】将正摄影像插入AutoCAD教程
  4. 前苏联科技那么强大,俄罗斯的芯片产业为什么也没有发展起来?
  5. 任务管理器结束任务进程
  6. Gearman vs Beanstalkd
  7. net core 程序 发布到 docker 中
  8. 22、商铺列表 - 小程序端开发 - 微擎小程序模块应用开发
  9. 清华大学计算机系保送,清华北大,保送到外校是什么水平?学姐:总比自己考研强...
  10. linux删除一年前的文件,Shell脚本实现删除一年前文件功能分享