elasticsearch java

已经安装好了elasticsearch服务,使用java开发语言,还在纠结于使用哪一种client去连接操作elasticsearch么?
目前有flummiJest、还有国人开发的bboss。我推荐使用官方支持的 Java High Level REST Client、或者spring-data-elasticsearch

  • 推荐使用官方支持的 Java High Level REST Client理由:elasticsearch官方在5.6.0版本(2017年9月11日)之后,提供了Java High Level REST Client的支持。而jest、flummi是从两三年之前就有的,那时候官方还没有提供REST Client的支持。具体操作,直接参考官网的api即可完成。

The first release of the Java high-level REST client went out with the 6.0.0-beta1 release of the Elastic Stack. It allows you to communicate via REST with Elasticsearch nodes running 6.0.0-beta1, but it is not fully compatible with 5.x nodes. The 5.6.0 release of the Elastic Stack recently went out and includes the 5.6.0 version of the high-level client, which works against Elasticsearch nodes running version 5.6. It is unfortunately not compatible with previous 5.x versions of Elasticsearch.

  • 推荐使用spring-data-elasticsearch理由:复杂的mapping可以自动完成,无需额外创建mapping。

当然,还有spring-data-elasticsearch的方式,可以连接操作elasticsearch。spring data elasticsearch方式,如果mapping结构是复杂的,这种方式还是可以省事很多。如果使用的elasticsearch服务,是比较新的;或者是需要将目前的项目中集成elasticsearch操作,但是目前项目中使用的spring版本比较低,集成时候出现了版本冲突异常,那么还是推荐使用Java High Level REST Client。

spring data elasticsearch

spring data elasticsearch elasticsearch
3.1.x 6.2.2
3.0.x 5.5.0
2.1.x 2.4.0
2.0.x 2.2.0
1.3.x 1.5.2

参考spring-projects,而且这里提供了一个demo,可以使用spring data elasticsearch。

如果要引用3.1.0 RC2版本,需要参考官网spring-data-elasticsearch,加入maven repositories,因为目前maven官方,只支持到3.0.10.RELEASE(2018年9月10日更新)

search.maven.org
dependencies {
    compile 'org.springframework.data:spring-data-elasticsearch:3.1.0.RC2'
}repositories {
    maven {
        url 'https://repo.spring.io/libs-milestone'
    }
}

目前即使使用这种最新的spring-data-elasticsearch:3.1.0.RC2,其实spring data elasticsearch依然还只是用的elasticsearch 官方Java Low Level REST Client Java API的6.2.2版本,并没有支持到elasticsearch 6.3以上的版本,目前elasticsearch官方(August 23, 2018)已经有6.4.0版本了。

elasticsearch.jpg

spring data elasticsearch官方没说支持到6.3以上版本,至少还可以用,不会像elasticsearch-analysis-ik那样因为版本不匹配而无法启动elasticsearch。我在本地安装启动的elasticsearch6.3.1版本,使用下面这种gradle配置,spring data elasticsearch是完全可以运行的,基本的CRUD也是ok的。

repositories {
    mavenCentral()
    maven {
        url 'https://repo.spring.io/libs-milestone'
    }
}

dependencies {
    compile 'org.springframework.data:spring-data-elasticsearch:3.1.0.RC2'
    compile 'org.springframework.boot:spring-boot:1.5.9.RELEASE'
    compile 'org.springframework.boot:spring-boot-starter-parent:1.5.9.RELEASE'
    compile 'org.springframework.boot:spring-boot-starter-web-services:1.5.9.RELEASE'
    compile 'org.projectlombok:lombok:1.18.2'
    testCompile group: 'junit', name: 'junit', version: '4.12'
}

注意到,我这里使用的是spring-boot是1.5.9.RELEASE版本,并没有像Spring Data Elasticsearch Spring Boot version matrix这样无法集成使用。

https://github.com/spring-projects/spring-data-elasticsearch/wiki/Spring-Data-Elasticsearch---Spring-Boot---version-matrix

另外,如果在elasticsearch官方已经更新了,但是elasticsearch-analysis-ik分词还没有更新,导致最新的elasticsearch无法使用旧版本ik分词而启动报错,也是可以有办法修改ik分词重新打包jar,使得最新的elasticsearch可以用上ik分词。

elasticsearch官方,Java Low Level REST Client Java API将在elasticsearch7版本之后废弃,推荐使用Java High Level REST Client。

We plan on deprecating the TransportClient in Elasticsearch 7.0 and removing it completely in 8.0. Instead, you should be using the Java High Level REST Client, which executes HTTP requests rather than serialized Java requests. The migration guidedescribes all the steps needed to migrate.

来源于https://www.elastic.co/guide/en/elasticsearch/client/java-api/current/client.html

所以,elasticsearch更新这么频繁,spring data更新又这么慢,期待elasticsearch7发布之后,spring data又会在什么时候支持呢?毕竟目前spring data elasticsearch 3.1.*版本才只是支持到elasticsearch6.2.2版本,封装的还只是Java Low Level REST Client Java API。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,076评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,658评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,732评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,493评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,591评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,598评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,601评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,348评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,797评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,114评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,278评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,953评论 5 339
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,585评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,202评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,442评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,180评论 2 367
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,139评论 2 352

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,647评论 18 139
  • 说明 在明确了ES的基本概念和使用方法后,我们来学习如何使用ES的Java API.本文假设你已经对ES的基本概念...
    epicGeek阅读 43,587评论 4 44
  • 教堂之前爱情的见证,最近我们好久没有合影了,看到之前的照片想起了以前的快乐时光,我们在一起真的需要学习,感恩丰盛课...
    东文奇业阅读 545评论 0 0
  • 屠洪武的儿子很小,屠洪武很爱他,五街区的学校也离的不远,但是屠洪武依经常去接他。 今天他等了好久,于是他自己回...
    疯霏羊阅读 336评论 0 0
  • 前几天翻看师弟的《大学语文》选修教材,在目录处看到一个有趣的名字——许嵩,我当时有些诧异,许嵩?该不会是同名吧? ...
    大煜头阅读 535评论 0 0