具有当前弹性搜索版本的Spring Boot应用程序

我最近尝试将elasticsearch包含在我的一个项目中。 因此,我查了不同的可能性。 它基本上归结为使用a)传输客户端(内部协议集群节点也用于通信=我的理解)或b)将其全部实现为我自己的REST HTTP调用。

因为b)看起来不是一个好的选择,而且我习惯于弹出数据,我尝试使用spring-data-elasticsearch,最近更新到版本3.0.0以支持es 5.5.0,这是最后一个很好的版本很老了。

好吧,我尝试了所有的东西,但没有设法让它与我的项目一起工作,因为这似乎是某种依赖性你会陷入其中。 我的项目太大了,我只是无法升级到spring boot 2.0.0M4,我认为这需要支持新的spring-data-elasticsearch版本 – 对吧?

那么,有人可以就当前和首选的方式提出建议吗?未来是关于如何在春季项目中处理弹性搜索? 我们真的必须自己实现整个REST API吗? 我错过了什么吗?

这是应该使用的REST客户端,如果有一个使用,对吧?

这是我知道的旧兼容性图表。

谢谢!

不幸的是,有很多选择:

  • 有你提到的传输客户端。 虽然尚未弃用,但它不是前进的方式,我不会用它开始一个新项目(如果可能的话)。
  • 有一个低级REST客户端(在您链接的博客文章中提到),它在5.0中添加,但也与旧版本兼容。 虽然它有效,但你真的不想使用它,因为它的级别相当低(顾名思义)。
  • 高级REST客户端刚刚发布了5.6 – 这是你想要继续使用的 (它将使你与特定的Spring Boot / Data版本分离)。 现在它只支持索引,删除,聚合,搜索和批量API,但对于常规操作,这应该足够了。 将来会添加更多API,如果您需要执行其他任务(例如为集成测试设置特定映射),您可以随时回退到低级客户端。
  • 随着Spring Data Kay的发布,它还支持Elasticsearch 5.x. 如果你需要使用Spring Data,这就是你想要使用的,但请记住,这是一个社区项目,开发速度可能比每个人都要慢(尽管他们接受拉取请求;-))。 正如您所发现的那样,您需要使用Spring Boot 2来内置Spring Data Kay。这可能是升级的一个很好的理由,或者它可能是一个阻止你。

如何编写一个小型服务,它将成为Spring Boot 2中的独立应用程序,具有最新的ES依赖性,并为其提供与您对项目其余部分的要求兼容的REST API? 您可以通过RestTemplate与初学者进行通信。

通过这种方式,您可以开始将大型项目分解为更小的子项目,最终甚至可能是微服务。 此外,spring boot 2还有一些非常好的反应选项,这对于处理数据非常有用。