Vijendra
Vijendra

Reputation: 3

AWS Elasticsearch Failed to detect the Elasticsearch version. It gives 403 forbidden

I am using AWS elasticsearch with hibernate and Spring MVC. While auto detecting the version of elasticsearch at the time of serever start up, below exception is thrown

Failed to detect the Elasticsearch version running on the cluster.
at org.hibernate.search.elasticsearch.dialect.impl.DefaultElasticsearchDialectFactory.createDialect(DefaultElasticsearchDialectFactory.java:39) ~[hibernate-search-elasticsearch-5.9.0.Final.jar:5.9.0.Final]
at org.hibernate.search.elasticsearch.impl.DefaultElasticsearchService.start(DefaultElasticsearchService.java:100) ~[hibernate-search-elasticsearch-5.9.0.Final.jar:5.9.0.Final]
at org.hibernate.search.engine.service.impl.StandardServiceManager$ServiceWrapper.startService(StandardServiceManager.java:323) ~[hibernate-search-engine-5.9.0.Final.jar:5.9.0.Final]
at org.hibernate.search.engine.service.impl.StandardServiceManager$ServiceWrapper.startVirtual(StandardServiceManager.java:288) ~[hibernate-search-engine-5.9.0.Final.jar:5.9.0.Final]
at org.hibernate.search.engine.service.impl.StandardServiceManager.createAndCacheWrapper(StandardServiceManager.java:225) ~[hibernate-search-engine-5.9.0.Final.jar:5.9.0.Final]
at org.hibernate.search.engine.service.impl.StandardServiceManager.requestService(StandardServiceManager.java:100) ~[hibernate-search-engine-5.9.0.Final.jar:5.9.0.Final]
at org.hibernate.search.elasticsearch.impl.ElasticsearchIndexManager.initialize(ElasticsearchIndexManager.java:153) ~[hibernate-search-elasticsearch-5.9.0.Final.jar:5.9.0.Final]
at org.hibernate.search.indexes.impl.IndexManagerGroupHolder.doCreateIndexManager(IndexManagerGroupHolder.java:195) ~[hibernate-search-engine-5.9.0.Final.jar:5.9.0.Final]
Caused by: org.hibernate.search.exception.SearchException: HSEARCH400007: Elasticsearch request failed.
403 'Forbidden' with body
{
"message": "Authorization header requires 'Credential' parameter. Authorization header requires 'Signature' parameter. Authorization header requires 'SignedHeaders' parameter. Authorization header requires existence of either a 'X-Amz-Date' or a 'Date' header."

Please note that everything is working fine if I am using a dedicated elastic search server installation instead of AWS elasticsearch service.

Upvotes: 0

Views: 1803

Answers (1)

Rakesh Sharma
Rakesh Sharma

Reputation: 61

You might be setting below properties in your elasticsearch configuration

hibernate.search.default.elasticsearch.username hibernate.search.default.elasticsearch.password

By defaut AWS elasticsearch service uses anonymous user, so no username password is required. If you set these properties (even with blank values) hibernate will try to authenticate the request with Basic authentication which will get failed because the other required headers will be missing. So don't set above properties when using AWS elasticsearch service.

Upvotes: 1

Related Questions