Skip to content

Support Opensearch as indexing backend - #750

Open
pinal-shah wants to merge 2 commits into
masterfrom
ATLAS-4796_u
Open

pinal-shah wants to merge 2 commits into
masterfrom
ATLAS-4796_u

Conversation

@pinal-shah

@pinal-shah pinal-shah commented Sep 9, 2026 •

Copy link
Copy Markdown
Collaborator

What changes were proposed in this pull request?

Note

Tests related changes is maintained in separate commit (under same PR) for better visibility during code review

Summary

Added native OpenSearch support for Apache Atlas as an alternative indexing backend to Solr.

Key Changes

  • Added JanusGraph OpenSearch index implementation for Atlas graph/mixed indexes.
  • Added support for OpenSearch 3.7
  • Added OpenSearch support for discovery, Quick Search/free-text search, suggestions, aggregations, and classification filtering.
  • Added OpenSearch query/mapping support, including .keyword fields for exact-match queries.
  • Added safe/idempotent concurrent index creation.
  • Improved propagation of OpenSearch indexing/search failures.
  • Added comprehensive unit and integration test coverage.
  • Added CI validation against OpenSearch 3.7 and 3.8.
  • Kept the existing Solr backend fully supported and unchanged as an alternative.

How was this patch tested?

All OpenSearch ITs (with opensearch testcontainer)

mvn -Popensearch-it -pl graphdb/janusgraph-opensearch,graphdb/janus,repository
-Dopensearch.docker.version=3.7.0 -Dcheckstyle.skip=true test

Unit tests (no Docker)

mvn -pl graphdb/janusgraph-opensearch,graphdb/janus,test-tools -Dcheckstyle.skip=true test

Manually verified below

  • Entity lifecycle and indexing
  • Exact-match, free-text, and classification-based search
  • Suggestions and aggregations
  • Search relevance/ranking
  • Pagination and large result sets
  • Combined search filters
  • Index creation and concurrent operations
  • Error handling and backend recovery

Add JanusGraph OpenSearch index provider, Atlas integration layer,
repository search support, Docker setup, and build configuration.
Add Testcontainers-based ITs, test utilities, updated unit tests,
and CI workflow for OpenSearch 3.7/3.8 verification.

@VisibleForTesting
static JanusGraph initJanusGraph(Configuration config) {
org.apache.commons.configuration2.Configuration conf2 = createConfiguration2(config);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could you clarify why we are using config directly to create the JanusGraph instance instead of using conf2, which already handles parsing the properties? I don't see how this change is related to the OpenSearch integration.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants