In order to enable horizontal scaling for OpenMRS as well as take off some load from the OpenMRS instance we need to point Hibernate Search to a distributed search engine instead of the in-built Lucene index that we use right now for the Patients and Concepts search.
I am hoping that we will be able to continue to support the in-built index for implementations that are running on a weaker hardware while bigger implementation would just need to change the configuration once they deploy a new search service.
Hibernate Search supports the built-in Lucene index and OpenSearch or ElasticSearch as distributed backend.
We need to choose between ElasticSearch and OpenSearch. Apparently ElasticSearch can be considered open-source again and OpenSearch definitely is open-source.
Switching to OpenSearch or ElasticSearch does require a bit of changes in openmrs-core and providing a new implementation for queries against the distributed search engine, but it’s not a huge effort. From the perspective of code it doesn’t matter if the backend is OpenSearch or ElasticSearch. Hibernate Search can support both with the same code.
I’m looking for opinions which would be preferred by the community. It’s not a deal breaker since one can still decide which engine to deploy, but our reference setup will include examples and instructions just for one of them.