I am trying to deploy my node application with Elasicsearch and I want to use the official Elasticsearch add-on foundelasticsearch into my Heroku application.
Here is my workflow:
- In my node application, I created a
app.jsonfor adding the add-on during deployment.
app.json:
{
"name": "<MY_APP>",
"addons": ["foundelasticsearch:dachs-standard"],
"environments": {
"review": {
"addons": ["foundelasticsearch:dachs-standard"]
}
}
}
-
I wanted to build a Heroku review apps for testing purpose. So I tried to create a Heroku review app. As the review app was built, the
foundelasticsearchadd-on was created and anFOUNDELASTICSEARCH_URL(https://<cluster_id>.us-east-1.aws.found.io) was also added to the Heroku config vars. -
My application is using elastiscsearch client for Javascript (@ elastic/elasticsearch) to connect with the
foundelasticsearch.
My code:
const esClient = new Client({
node: process.env.FOUNDELASTICSEARCH_URL,
tls: {
// required for development
rejectUnauthorized: false
}
})
- Because the
FOUNDELASTICSEARCH_URLdoes not include the username:password in the url. My application failed to connect and threw an error
ResponseError: security_exception: [security_exception] Reason: unable to authenticate user [] for REST request
My question is how to set up the foundelasticsearch properly for Heroku review apps so that my application can access with the credential right after built.
Any suggestion is appreciated. Thanks !
P.s. I also tried to use other add-ons such like Bonsai and Searchbox. Both Bonsai and Searchbox would provide the URL in config vars including the username:password, e.g, http://username:password@redwood-12345.us-east-1.bonsai.io/. I wonder if foundelasticsearch would also have something like URL including username:password, because I am not able to use Bonsai and Searchbox for my application since both of those add-ons are not supporting the version of elasticsearch (8.4.0) in my application.