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

krugob8w  于 12个月前  发布在  ElasticSearch
关注(0)|答案(4)|浏览(163)

在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

字符串
再现
Product.reindex

e5nqia27

e5nqia271#

使用monthatch绕过检查。例如在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

字符串

jmo0nnb3

jmo0nnb32#

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

pip install elasticsearch<7.14.0

字符串

cpjpxq1n

cpjpxq1n3#

它在降级到ElasticSearch< 7.14后运行良好。所以基本上添加了一个gem来限制版本升级

gem  elasticsearch, "< 7.14"

字符串

ar7v8xwq

ar7v8xwq4#

当你的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的answer in this discussion.
其它解决方案可以是通过覆盖方法verify_with_version_or_header来使验证静默,如在https://github.com/elastic/elasticsearch-ruby/issues/1429#issuecomment-958162468
但事实上,这两种解决方案都是“不推荐”的解决方案。真正的解决方案是升级服务器

相关问题