17

Getting this error when using searchkick with elasticsearch on mac.

Searchkick version: 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

To reproduce

Product.reindex

rmlockerd
  • 3,776
  • 2
  • 15
  • 25
Siddhant
  • 687
  • 1
  • 8
  • 15
  • 3
    Try downgrading your `elasticsearch` gem e.g. add `gem elasticsearch, "< 7.14"` to your Gemfile. It seems that 7.14 introduced these issues. [Open Issue](https://github.com/elastic/elasticsearch-ruby/issues/1429) – engineersmnky Aug 12 '21 at 19:23

3 Answers3

32

If you are using Python elasticsearch client, you need to downgrade or install version before 7.14.0.

pip install elasticsearch<7.14.0
Mostafa Ghadimi
  • 5,883
  • 8
  • 64
  • 102
Buoy Rina
  • 498
  • 1
  • 4
  • 7
  • 2
    See more detail about this here: https://github.com/elastic/elasticsearch-py/pull/1623 shocking, intentionally breaking move from elasticsearch, I'll be pushing to move our clusters to opensearch – Preston Mar 02 '22 at 23:09
  • related to this are discussion in https://github.com/elastic/elasticsearch-py/issues/1639 and https://github.com/toptal/chewy/pull/811/files – equivalent8 Apr 27 '22 at 10:20
  • 2
    worked for me pip3 install elasticsearch==7.13.4 – Suraj Singh Rathore Jul 15 '23 at 18:56
17

It worked fine after degrading to elastic search < 7.14. So basically added a gem to restrict the version upgrade

gem  elasticsearch, "< 7.14"
Siddhant
  • 687
  • 1
  • 8
  • 15
  • 1
    I was having the same issue with fluentd elasticsearch-plugin , as suggested in here ,I did the gem downgrade and got my issue fixed ... I guess this problem is common across all elasticsearch clients – rugby2312 Feb 26 '22 at 07:46
  • Discussion in details to why this is: https://github.com/elastic/elasticsearch-ruby/issues/1429 – equivalent8 Apr 27 '22 at 10:26
1

Elasticsearch::UnsupportedProductError is raised when your Elasticsearch server version don't match with Ruby's Elasticsearch client (gem elasticsearch). In order to fix this properly you need a server that is up to date with latest Elasticsearch (ES) releases

that means if you are on ES provider like https://cloud.elastic.co/ where you work with latest versions of cluster it's easy peasy => server gets upgraded => this is not an issue

if you however work with provider that is slow to catch up with latest ES releases (like AWS Elasticsearch / AWS Opensearch where last version is 7.10 and will not get upgraded anytime soon) your only option is to use gem elasticsearch, "< 7.14" (Siddhant's answer in this discussion ...and yes this means no potential security updates

other solution may be to silence the verification by overriding method verify_with_version_or_header as proposed in https://github.com/elastic/elasticsearch-ruby/issues/1429#issuecomment-958162468

but reality is both of this solutions are just "not recommended" workarounds. The real fix is a server upgrade

equivalent8
  • 13,754
  • 8
  • 81
  • 109