spring boot 整合 elasticsearch 5.x
spring boot与elasticsearch集成有两种方式。一种是直接使用elasticsearch。一种是使用data中间件。
本文只指针使用maven集成elasticsearch 5.x,以及使用spring-boot-starter-data-elasticsearch中间件的情况。不包含以上两种情况请忽略。
第一种方式,本来没什么好说的。新建一个maven项目,引入spring boot相关依赖,再导入elasticsearch的依赖。但是,问题出现了:
依赖:
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>transport</artifactId>
<version>5.2.1</version>
</dependency>
得到的jar包:

导入的是5.x的版本,最终得到的2.x的版本。lucene也是5.x版本。可能有的人会说,应该显示指定elasticsearch版本啊。
首先,在transport的项目中已经引入了es的依赖。不需在项目中重复引入。

其次,在非spring boot的项目中,只引入transport就可以了。

那么,问题只能是出在spring boot上面。
后来检查发布引入了<parent>,spring boot会自动选择最合适的版本进行添加。
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.3.RELEASE</version>
<relativePath />
</parent>
找到spring boot 1.5.3.RELEASE的源码,https://github.com/spring-projects/spring-boot/blob/1.5.x/spring-boot-dependencies/pom.xml。确实在这个版本中,引入的是elasticsearch2.x。因为使用了parent,所以,父级的依赖优先级最高。所以直接下载了spring boot 1.5.3.RELEASE所依赖的版本。而非子依赖的版本。
https://github.com/spring-projects/spring-boot/blob/1.5.x/spring-boot-dependencies/pom.xml

那么要想到spring boot中引入es的5.x版本,两种方式,第一种, A:显式引入es依赖,或者,B:覆盖掉spring boot的es版本。第二种,C:去掉<parent>依赖,手动添加spring-boot的依赖。三个选项的关系:(A||B)||(C)。
<properties>
<elasticsearch.version>5.4.3</elasticsearch.version>
</properties>
或者
<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
<version>5.4.3</version>
</dependency>
第二种方式。好消息是spring已经正式发布版本支持es 5.0版本了。
| spring data elasticsearch | elasticsearch |
|---|---|
| 3.0.0.RC2 | 5.5.0 |
| 3.0.0.M4 | 5.4.0 |
| 2.0.4.RELEASE | 2.4.0 |
| 2.0.0.RELEASE | 2.2.0 |
| 1.4.0.M1 | 1.7.3 |
| 1.3.0.RELEASE | 1.5.2 |
| 1.2.0.RELEASE | 1.4.4 |
| 1.1.0.RELEASE | 1.3.2 |
| 1.0.0.RELEASE | 1.1.1 |
不过,发布才不到一个月,直接用maven还下载不了。需要手动。

坏消息是,spring boot集成了与elasticsearch 5.x的版本,但还算不上正式发布。最新的正式版本只支持到2.4。
| spring data elasticsearch | elasticsearch |
|---|---|
| 2.0.4.RELEASE | 2.4.0 |
| 2.0.0.RELEASE | 2.2.0 |
| 1.4.0.M1 | 1.7.3 |
| 1.3.0.RELEASE | 1.5.2 |
| 1.2.0.RELEASE | 1.4.4 |
| 1.1.0.RELEASE | 1.3.2 |
| 1.0.0.RELEASE | 1.1.1 |
在非正式的版本中,jdk9和endpoint-infrastructure 这两个branches中,使用的是es 5.x版本。然而,尴尬的是,不久前,这两个版本都被打上了红叉。

想尝鲜的朋友,也可以去看一下最新的发布版本,2.0以上的都是使用了es 5.x版本。不过,不知道是使用的哪个branches发布,慎重使用。

以上版本,都刚发布不久,还没有被maven仓库收录。如果想使用,只能把代码拉到本地,编译,放入自己的仓库。不过,在可期的未来应该会有稳定的使用es 5.0的spring boot版本发布。
spring boot 整合 elasticsearch 5.x的更多相关文章
- Spring Boot整合Elasticsearch
Spring Boot整合Elasticsearch Elasticsearch是一个全文搜索引擎,专门用于处理大型数据集.根据描述,自然而然使用它来存储和搜索应用程序日志.与Logstash和K ...
- 【spring boot】【elasticsearch】spring boot整合elasticsearch,启动报错Caused by: java.lang.IllegalStateException: availableProcessors is already set to [8], rejecting [8
spring boot整合elasticsearch, 启动报错: Caused by: java.lang.IllegalStateException: availableProcessors ], ...
- Elasticsearch学习(3) spring boot整合Elasticsearch的原生方式
前面我们已经介绍了spring boot整合Elasticsearch的jpa方式,这种方式虽然简便,但是依旧无法解决我们较为复杂的业务,所以原生的实现方式学习能够解决这些问题,而原生的学习方式也是E ...
- Spring Boot 整合 Elasticsearch,实现 function score query 权重分查询
摘要: 原创出处 www.bysocket.com 「泥瓦匠BYSocket 」欢迎转载,保留摘要,谢谢! 『 预见未来最好的方式就是亲手创造未来 – <史蒂夫·乔布斯传> 』 运行环境: ...
- Spring Boot 整合 elasticsearch
一.简介 我们的应用经常需要添加检索功能,开源的 ElasticSearch 是目前全文搜索引擎的 首选.他可以快速的存储.搜索和分析海量数据.Spring Boot通过整合Spring Data E ...
- Elasticsearch学习(1) Spring boot整合Elasticsearch
本文的Spring Boot版本为1.5.9,Elasticsearch版本为2.4.4,话不多说,直接上代码. 一.启动Elasticsearch 在官网上下载Elasticsearch后,打开bi ...
- Spring Boot整合ElasticSearch和Mysql 附案例源码
导读 前二天,写了一篇ElasticSearch7.8.1从入门到精通的(点我直达),但是还没有整合到SpringBoot中,下面演示将ElasticSearch和mysql整合到Spring Boo ...
- Elasticsearch学习(4) spring boot整合Elasticsearch的聚合操作
之前已将spring boot原生方式介绍了,接下将结介绍的是Elasticsearch聚合操作.聚合操作一般来说是解决一下复杂的业务,比如mysql中的求和和分组,由于博主踩的坑比较多,所以博客可能 ...
- spring boot 整合elasticsearch
1.导入jar包 <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncodi ...
随机推荐
- Angular4.0引入第三方框架,eg: bootstrap、jquery
最近学习angular4.0,在练习是需要使用jquery和bootstrap.但是查阅了,大多数都是angular2的方法,或者是angular4.0的方法但是不准确.花了一些时间终于捣腾出来了,把 ...
- macbook 显示所有文件夹
在macbook终端执行如下代码: 1. 设置打开所有的文件 defaults write com.apple.finder AppleShowAllFiles -bool true 2. 关闭之前打 ...
- springboot 缓存架构
线程内部缓存:a. 局部变量HashMap, 方法间传递 b. 使用ThreadLocal 本地缓存:单jvm内共享 可以使用(Concurrent)HashMap自己实现,也可以使用GuavaCa ...
- python trie
Trie 库 https://github.com/pytries/marisa-trie/blob/master/docs/tutorial.rst http://marisa-trie.readt ...
- ASP.NET资源大全-知识分享 【转载】
API 框架 NancyFx:轻量.用于构建 HTTP 基础服务的非正式(low-ceremony)框架,基于.Net 及 Mono 平台.官网 ASP.NET WebAPI:快捷创建 HTTP 服务 ...
- Redis中存入存储的编码方式不一致解决问题
在利用redis缓存的时候,存入的数据与取出的数据编码方式不一致解决办法. from redis import StrictRedis #ecoding = 'utf-8',默认解码方式为bytes, ...
- 18.2 of的函数集中的of是Open Firmware的缩写
内核中操作dtb的一套函数都是of开头,这个of是open firmware.dts的方法来源于open Firmware On Sun SPARC systems, the Open Firmwar ...
- springJdbc(jdbcTemplate)事物拦截失效问题解决
先贴上web.xml和spring-jdbc.xml代码: web.xml代码: <context-param> <param-name>contextConfigLocati ...
- 使用Tensorflow操作MNIST数据
MNIST是一个非常有名的手写体数字识别数据集,在很多资料中,这个数据集都会被用作深度学习的入门样例.而TensorFlow的封装让使用MNIST数据集变得更加方便.MNIST数据集是NIST数据集的 ...
- 源码:Java集合源码之:哈希表(二)
要想知道一个元素是否在数组或链表中,只能从前向后挨个对比,无论是数组还是链表,其对数据的查询表现都比较无力.在的二叉排序树中,还会将数据排序以进行二分查找,将时间复杂度从O(n)降低到O(lg n). ...