I'm currently working on an app that's going to connect to two Opensearch clusters.
My current plan is to simply swap the Searchkick client in code depending on which cluster I need to query, since it supports code like this:
client_one = OpenSearch::Client.new(...)
client_two = OpenSearch::Client.new(...)
Searchkick.client = client_one
And every operation from there will use the assigned client. It's still early in the project, but this is working so far.
Curious about how you ended up implementing this.