2017-10-08 60 views
1

我最近试图将elasticsearch纳入我的一个项目中。因此,我查找了这样做的不同可能性。它基本上用于a)传输客户端(内部协议集群节点也用于通信=我的理解),或b)全部实现为REST HTTP调用。使用当前elasticsearch版本的Spring Boot应用程序

由于b)看起来不是一个好的选择,而且我习惯于使用弹簧数据反正我试过使用spring-data-elasticsearch,它最近更新到3.0.0版以支持es 5.5.0,它是伟大的最后一个版本是非常古老的。

嗯,我尝试了一切,但没有设法让它与我的项目一起工作,因为这真的好像是你进入某种依赖性的地狱。我的项目太大了,我不能将它升级到Spring Boot 2.0.0M4,我相信这将支持新的spring-data-elasticsearch版本 - 对吧?

那么,有人可以请现在和首选的方式,现在和未来的建议如何处理春季项目elasticsearch?我们是否真的必须自己实现整个REST API?我错过了什么吗?

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

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

谢谢!

回答

2

不幸的是有相当多的选择在那里:

  • 还有你刚才提到的传输客户端。尽管还没有被弃用,但它并不是前进的方向,我不会用它开始一个新项目(如果可能的话)。
  • 还有一个低级别的REST客户端(在你已链接的博客文章中提到过),该客户端已在5.0中添加,但也与旧版本兼容。虽然它起作用,但你并不真的想要使用它,因为它很低级(顾名思义)。
  • 高级别REST客户端有just been released with 5.6 - 这就是你想要使用前进(它会解耦你从一个特定的Spring Boot/Data版本)。目前它只支持索引,删除,聚合,搜索和批量API,但对于常规操作,这应该足够了。将来会增加更多API,如果您需要执行其他任务(例如为集成测试设置特定映射),您可以始终回退到低级别客户端。
  • 随着Spring Data Kay的发布,它也支持Elasticsearch 5.x.如果你需要使用Spring Data,这就是你想要使用的,但请记住它是一个社区项目,开发速度可能比每个人都想要的慢(尽管他们确实接受pull请求;-))。正如您发现的,您需要使用Spring Boot 2来构建Spring Data Kay。这可能是升级的一个很好的理由,或者它可能会成为您的拦截器。
+0

谢谢。这是一个很好的选项总结。我想我会选择你所建议的。基本上我必须索引很多文章,执行更多像这样的术语和术语向量查询并检索数据(在某种程度上过滤,如字段A必须是VALUE_1或VALUE_2等)。 – Omegavirus

1

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

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

+0

感谢您的建议。我已经有了那种抽象,但是我相信你的方法会在最后增加更多的开销。或者不是,如果该项目未来升级到新的春季版本,最终。但目前这意味着我必须同时实施这两项。我自己的REST接口+一个新的“应用程序”只是做elasticsearch的东西。 – Omegavirus

相关问题