【问题标题】:Spring Boot application with current elasticsearch version具有当前 elasticsearch 版本的 Spring Boot 应用程序
【发布时间】:2017-10-10 05:41:46
【问题描述】:

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

As b) 看起来不是一个好的选择,而且我习惯于使用 spring 数据无论如何我尝试使用 spring-data-elasticsearch,它最近更新到版本 3.0.0 以支持 es 5.5.0,这很棒因为上一个版本太旧了。

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

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

Here是应该使用的REST客户端,如果有的话,对吧?

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

谢谢!

【问题讨论】:

    标签: java spring spring-mvc elasticsearch


    【解决方案1】:

    不幸的是,那里有很多选择:

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

    【讨论】:

    • 谢谢。这是对选项的一个很好的总结。我想我会选择你建议的那个。基本上我必须索引很多文章,执行更多这样的和术语向量查询并检索数据(在某种程度上过滤,比如字段A必须是VALUE_1或VALUE_2等。
    【解决方案2】:

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

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

    【讨论】:

    • 感谢您的建议。我已经有了这种抽象,但是我相信你的方法最终会增加不必要的开销。或者不,如果项目将来升级到新的春季版本,最终。但就目前而言,这意味着我必须同时实现两者。我自己的 REST 接口 + 一个新的“应用程序”,只是在做弹性搜索。
    猜你喜欢
    • 2019-10-31
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    • 2021-06-02
    • 2019-12-26
    • 2018-04-07
    • 1970-01-01
    • 2016-04-03
    相关资源
    最近更新 更多