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

问题描述 投票:0回答:4

在 Mac 上将 searchkick 与 elasticsearch 结合使用时出现此错误。

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

重现

产品.重新索引

ruby-on-rails elasticsearch searchkick
4个回答
34
投票

如果您使用的是Python elasticsearch客户端,则需要降级或安装7.14.0之前的版本。

pip install elasticsearch<7.14.0

17
投票

降级为弹性搜索后工作正常< 7.14. So basically added a gem to restrict the version upgrade

gem  elasticsearch, "< 7.14"

1
投票
当您的 Elasticsearch 服务器版本与 Ruby 的 Elasticsearch 客户端不匹配时,会引发

Elasticsearch::UnsupportedProductError
(
gem elasticsearch
)。为了正确解决此问题,您需要一台安装了最新 Elasticsearch (ES) 版本的服务器

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

但是,如果您与赶上最新 ES 版本的提供商合作(例如 AWS Elasticsearch / AWS Opensearch,最新版本为 7.10,并且不会很快升级),您唯一的选择是使用

gem  elasticsearch, "< 7.14"
(Siddhant 的 answer)在本次讨论中 ...是的,这意味着没有潜在的安全更新

其他解决方案可能是通过重写方法 verify_with_version_or_header 来静默验证,如 https://github.com/elastic/elasticsearch-ruby/issues/1429#issuecomment-958162468

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


0
投票

用猴子补丁绕过检查。例如在 Rails 中:

# in config/initializers/elasticsearch.rb

module Elasticsearch
  class Client
    alias original_verify_with_version_or_header verify_with_version_or_header

    def verify_with_version_or_header(...)
      original_verify_with_version_or_header(...)
    rescue Elasticsearch::UnsupportedProductError => exception
      warn("Ignoring elasticsearch complaint: #{exception.message}")
    end
  end
end
© www.soinside.com 2019 - 2024. All rights reserved.