对于 JVM 应用程序,是否有充分的理由使用 Elasticsearch REST API?
For a JVM app, is there any good reason to use Elasticsearch REST API?
我正在开发 Java 应用程序,其中包括 Elasticsearch。
到目前为止,我已经使用了 Java 节点客户端。然后前段时间听同事说首选REST API,原因如下:
- 能够在不影响传输客户端版本的情况下升级 Elasticsearch,即 Java 客户端的版本取决于 ES 集群的版本 运行
- Node/transport 客户端将在即将发布的版本中弃用?
- 安全
我现在正试图找出它的容量。
当谈到#1 时,the Elasticsearch docs state 客户端和 ES 集群具有相同的主要版本(通常)就足够了。所以,REST API 并没有真正提供更好的东西。
然后,#3 由 Shield 处理。
我找不到关于 #2 的任何信息。
从上面的信息来看,我可能想在我的 Java 应用程序中使用 REST API 的唯一原因是版本独立性,只是为了安全起见。除此之外,不多;这是真的吗? node/transport 客户端真的会被弃用吗?
我不是 ES 专家,但我们只是在问自己同样的问题,以下是我们对这个主题的看法。
- ES 客户端版本与 ES 服务器版本:
- 本机客户端遵循您声明的规则:主要版本兼容性。直到最近才出现这种情况,对于真正特定的功能(例如 Percolator),情况仍然不是(次要版本的重大更改),
- 现在最好的 HTTP 客户端抽象 Jest 似乎具有相同的限制:documentation 表示版本 1.x 不适用于 2.x、
- 最后的解决方案是使用低级 HTTP 客户端,但失去了流畅的 Java 抽象。经不起比较,
- 您不能使用基于本机客户端的 Java 应用程序解决混合版本的 ES(在具有 1.x 和 2.x 实例的异构环境的情况下)。它应该可以通过 HTTP 客户端实现,因此可以简化一些渐进式迁移场景。
- 本机客户端弃用:
- 没说清楚,但是there will be an official HTTP client for version 5.x。那么,拥有两个客户有什么意义呢?
- 安全:
- 如果需要(例如 Apache 前端)或使用 https://github.com/Asquera/elasticsearch-http-basic、
,可以使用一些中间件轻松设置基本 HTTP 安全性
- Shield 是官方的,适用于本机和 HTTP 但不是免费的……
在我们的应用中,我们使用 Spring 数据 ES。非常易于使用,代码行数很少,但版本滞后(支持 ES 2 发布后 2.x 6 个月)并且基于本机客户端。从我们的角度来看,在开发效率方面的权衡是值得的。
最后,SAAS 只提供 HTTP API,所以在这种情况下,您没有选择。
我正在开发 Java 应用程序,其中包括 Elasticsearch。
到目前为止,我已经使用了 Java 节点客户端。然后前段时间听同事说首选REST API,原因如下:
- 能够在不影响传输客户端版本的情况下升级 Elasticsearch,即 Java 客户端的版本取决于 ES 集群的版本 运行
- Node/transport 客户端将在即将发布的版本中弃用?
- 安全
我现在正试图找出它的容量。
当谈到#1 时,the Elasticsearch docs state 客户端和 ES 集群具有相同的主要版本(通常)就足够了。所以,REST API 并没有真正提供更好的东西。
然后,#3 由 Shield 处理。
我找不到关于 #2 的任何信息。
从上面的信息来看,我可能想在我的 Java 应用程序中使用 REST API 的唯一原因是版本独立性,只是为了安全起见。除此之外,不多;这是真的吗? node/transport 客户端真的会被弃用吗?
我不是 ES 专家,但我们只是在问自己同样的问题,以下是我们对这个主题的看法。
- ES 客户端版本与 ES 服务器版本:
- 本机客户端遵循您声明的规则:主要版本兼容性。直到最近才出现这种情况,对于真正特定的功能(例如 Percolator),情况仍然不是(次要版本的重大更改),
- 现在最好的 HTTP 客户端抽象 Jest 似乎具有相同的限制:documentation 表示版本 1.x 不适用于 2.x、
- 最后的解决方案是使用低级 HTTP 客户端,但失去了流畅的 Java 抽象。经不起比较,
- 您不能使用基于本机客户端的 Java 应用程序解决混合版本的 ES(在具有 1.x 和 2.x 实例的异构环境的情况下)。它应该可以通过 HTTP 客户端实现,因此可以简化一些渐进式迁移场景。
- 本机客户端弃用:
- 没说清楚,但是there will be an official HTTP client for version 5.x。那么,拥有两个客户有什么意义呢?
- 安全:
- 如果需要(例如 Apache 前端)或使用 https://github.com/Asquera/elasticsearch-http-basic、 ,可以使用一些中间件轻松设置基本 HTTP 安全性
- Shield 是官方的,适用于本机和 HTTP 但不是免费的……
在我们的应用中,我们使用 Spring 数据 ES。非常易于使用,代码行数很少,但版本滞后(支持 ES 2 发布后 2.x 6 个月)并且基于本机客户端。从我们的角度来看,在开发效率方面的权衡是值得的。
最后,SAAS 只提供 HTTP API,所以在这种情况下,您没有选择。