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

在非正式的版本中,jdk9endpoint-infrastructure 这两个branches中,使用的是es 5.x版本。然而,尴尬的是,不久前,这两个版本都被打上了红叉。

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

以上版本,都刚发布不久,还没有被maven仓库收录。如果想使用,只能把代码拉到本地,编译,放入自己的仓库。不过,在可期的未来应该会有稳定的使用es 5.0的spring boot版本发布。

 

spring boot 整合 elasticsearch 5.x的更多相关文章

  1. Spring Boot整合Elasticsearch

    Spring Boot整合Elasticsearch   Elasticsearch是一个全文搜索引擎,专门用于处理大型数据集.根据描述,自然而然使用它来存储和搜索应用程序日志.与Logstash和K ...

  2. 【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 ], ...

  3. Elasticsearch学习(3) spring boot整合Elasticsearch的原生方式

    前面我们已经介绍了spring boot整合Elasticsearch的jpa方式,这种方式虽然简便,但是依旧无法解决我们较为复杂的业务,所以原生的实现方式学习能够解决这些问题,而原生的学习方式也是E ...

  4. Spring Boot 整合 Elasticsearch,实现 function score query 权重分查询

    摘要: 原创出处 www.bysocket.com 「泥瓦匠BYSocket 」欢迎转载,保留摘要,谢谢! 『 预见未来最好的方式就是亲手创造未来 – <史蒂夫·乔布斯传> 』 运行环境: ...

  5. Spring Boot 整合 elasticsearch

    一.简介 我们的应用经常需要添加检索功能,开源的 ElasticSearch 是目前全文搜索引擎的 首选.他可以快速的存储.搜索和分析海量数据.Spring Boot通过整合Spring Data E ...

  6. Elasticsearch学习(1) Spring boot整合Elasticsearch

    本文的Spring Boot版本为1.5.9,Elasticsearch版本为2.4.4,话不多说,直接上代码. 一.启动Elasticsearch 在官网上下载Elasticsearch后,打开bi ...

  7. Spring Boot整合ElasticSearch和Mysql 附案例源码

    导读 前二天,写了一篇ElasticSearch7.8.1从入门到精通的(点我直达),但是还没有整合到SpringBoot中,下面演示将ElasticSearch和mysql整合到Spring Boo ...

  8. Elasticsearch学习(4) spring boot整合Elasticsearch的聚合操作

    之前已将spring boot原生方式介绍了,接下将结介绍的是Elasticsearch聚合操作.聚合操作一般来说是解决一下复杂的业务,比如mysql中的求和和分组,由于博主踩的坑比较多,所以博客可能 ...

  9. spring boot 整合elasticsearch

    1.导入jar包 <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncodi ...

随机推荐

  1. Python全栈之路----函数----作用域

    Python中,一个函数就是一个作用域. 局部变量放置在其作用域中,根据作用域来区分,函数属于你,函数属于我. 定义完成后,作用域已经生成,使用时顺着作用域链向上查找. 函数定义完成后,不管被在哪儿被 ...

  2. C语言求行列式的值

    #include "stdafx.h" #include <stdio.h> #include <stdlib.h> #include <window ...

  3. 软件工程 week 02

    一.地址链接 1.作业地址:https://edu.cnblogs.com/campus/nenu/2016CS/homework/2110 2.git仓库地址:https://git.coding. ...

  4. 如何使用Nunit进行测试(Visual Studio 2017 comminity)

    一.环境 操作系统:Windows 版本 10.0.15063 64位 集成环境:Visual Studio 2017 comminity(此后简称vs2017) 编程语言:C# 目标框架:.NET ...

  5. C++中字符数组与string的相互转换

    字符数组转化成string类型char ch [] = "ABCDEFG";string str(ch);//也可string str = ch;或者char ch [] = &q ...

  6. python------面向对象进阶 异常处理

    一. 异常处理 try: pass except KeyError as e : #注3.x用as ,except KeyError, e ,2.x 用逗号. print("No this ...

  7. ios-屏幕适配(代码)

    由于第一个项目中98%的界面都用到UITableView,所以适配仅判断此.知道手工敲代码的繁复,遂传一部分,如果有更优的方法,欢迎提出. 如下图,图中提到的宏定义是在prefix.pch预编绎文件里 ...

  8. WebForm AnyWay

    项目地址 :  https://github.com/kelin-xycs/WebFormAnyWay WebForm AnyWay 用 WebForm 构建 简洁高效 的 Web 应用 WebFor ...

  9. 快速部署私人git服务--基于docker化Gogs

    Gogs 一款极易搭建的自助 Git 服务. 环境 Linux系统 docker 获取gogs镜像,并运行, docker run -it --: -p : -v /var/gogs:/data go ...

  10. Android的发展历史

    Android一词最早出现于法国作家利尔亚当(Auguste Villiers de l’Isle-Adam)在1886年发表的科幻小说<未来夏娃>(L’ève future)中.他将外表 ...