在 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
重现
产品.重新索引
如果您使用的是Python elasticsearch客户端,则需要降级或安装7.14.0之前的版本。
pip install elasticsearch<7.14.0
降级为弹性搜索后工作正常< 7.14. So basically added a gem to restrict the version upgrade
gem elasticsearch, "< 7.14"
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
但现实是这两种解决方案都只是“不推荐”的解决方法。真正的修复是服务器升级
用猴子补丁绕过检查。例如在 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