(Size L) Cells 1.5: Advanced search deployment strategy

Problem to solve

Advanced search on GitLab.com currently uses Elasticsearch hosted in ElasticCloud.

GET currently supports OpenSearch on AWS.

Having two different search backends across Cells will introduce issues with the divergent paths:

Differences in search behavior

While Elasticsearch and OpenSearch are close. Not all index settings and mappings are the same. #454764 (closed) details work where divergent paths in search backends are being handled

Automation of upgrade and index maintenance tasks

We plan to move towards automation of all upgrades and index maintenance tasks. Maintenance tasks are usually done manually using change request issues. The automation of index maintenance will use the Advanced search migration framework and ensure those migrations only run for GitLab.com to not impact self managed instances. Having a different search backend across cells may mean different migrations would need to be written for different cells.

Supporting cross cluster search

While we do not currently do cross cluster search today. We've been discussing using it to support global project search in cells. Cross cluster search is not possible across OpenSearch and Elasticsearch backends

Limitations for solutions in Org Mover

Using two different search backends would remove the ability to use Elasticsearch APIs to move organization level Advanced search data. We would need to rely upon the existing indexing pipeline which impacts Gitaly and PostgreSQL

Proposal

Use Elasticsearch for Cells with the same version as GitLab.com

Option 1 - Add support for cell specific indexes to GitLab

Keep the Elasticsearch cluster as one cluster (hosted in ElasticCloud) but allow each cell to prefix index names so they are separated.

Option 2 - Add support for Elasticsearch to GET

Each cell would have it's own cluster.

Edited by Terri Chu