Elasticsearch::UnsupportedProductError(客户端注意到服务器不是 Elasticsearch 支持的发行版

Elasticsearch::UnsupportedProductError (The client noticed that the server is not a supported distribution of Elasticsearch

在 mac 上使用带有 elasticsearch 的 searchkick 时出现此错误。

Searchkick 版本:searchkick (4.5.2)

$ elasticsearch --version
warning: no-jdk distributions that do not bundle a JDK are deprecated and will be removed in a future release
Version: 7.10.2-SNAPSHOT, Build: oss/tar/unknown/2021-01-16T01:41:27.115673Z, JVM: 16.0.2

重现

Product.reindex

如果使用Pythonelasticsearch客户端,需要降级或安装7.14.0之前的版本

pip 安装'elasticsearch<7.14.0'

降级到 elastic search < 7.14 后它工作正常。所以基本上加了一个gem来限制版本升级

gem  elasticsearch, "< 7.14"
当您的 Elasticsearch 服务器版本与 Ruby 的 Elasticsearch 客户端 (gem elasticsearch) 不匹配时,会引发

Elasticsearch::UnsupportedProductError。为了正确解决此问题,您需要一台与最新 Elasticsearch (ES) 版本保持同步的服务器

这意味着如果您使用像 https://cloud.elastic.co/ 这样的 ES 提供商,在那里您使用最新版本的集群,这很容易 => 服务器升级 => 这不是问题

但是,如果您使用的供应商跟不上最新的 ES 版本(例如 AWS Elasticsearch / AWS Opensearch,最新版本是 7.10,并且不会很快升级),您唯一的选择是使用 gem elasticsearch, "< 7.14"(Siddhant 的 ...是的,这意味着没有潜在的安全更新

其他解决方案可能是通过重写方法使验证静音 verify_with_version_or_header as proposed in https://github.com/elastic/elasticsearch-ruby/issues/1429#issuecomment-958162468

但现实是这两种解决方案都只是“不推荐”的解决方法。真正的解决办法是服务器升级