Reputation: 3
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
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