ElasticGraph::OpenSearch

Wraps the official OpenSearch client for use by ElasticGraph.

Dependency Diagram

graph LR; classDef targetGemStyle fill:#FADBD8,stroke:#EC7063,color:#000,stroke-width:2px; classDef otherEgGemStyle fill:#A9DFBF,stroke:#2ECC71,color:#000; classDef externalGemStyle fill:#E0EFFF,stroke:#70A1D7,color:#2980B9; elasticgraph-opensearch["elasticgraph-opensearch"]; class elasticgraph-opensearch targetGemStyle; elasticgraph-support["elasticgraph-support"]; elasticgraph-opensearch --> elasticgraph-support; class elasticgraph-support otherEgGemStyle; faraday["faraday"]; elasticgraph-opensearch --> faraday; class faraday externalGemStyle; faraday-retry["faraday-retry"]; elasticgraph-opensearch --> faraday-retry; class faraday-retry externalGemStyle; opensearch-ruby["opensearch-ruby"]; elasticgraph-opensearch --> opensearch-ruby; class opensearch-ruby externalGemStyle; elasticgraph-lambda_support["elasticgraph-lambda_support"]; elasticgraph-lambda_support --> elasticgraph-opensearch; class elasticgraph-lambda_support otherEgGemStyle; click faraday href "https://rubygems.org/gems/faraday" "Open on RubyGems.org" _blank; click faraday-retry href "https://rubygems.org/gems/faraday-retry" "Open on RubyGems.org" _blank; click opensearch-ruby href "https://rubygems.org/gems/opensearch-ruby" "Open on RubyGems.org" _blank;

Usage

ElasticGraph projects are configured to use this gem or elasticgraph-elasticsearch, based on which datastore is being used.

To use an ElasticGraph project with OpenSearch, bootstrap an ElasticGraph project with --datastore opensearch:

gem exec elasticgraph new path/to/project --datastore opensearch

Migrate from Elasticsearch to OpenSearch

If you need to convert an existing project to use OpenSearch instead of Elasticsearch, here's how to do that.

First, replace elasticgraph-elasticsearch with elasticgraph-opensearch in the Gemfile:

diff --git a/Gemfile b/Gemfile
index 4a5ef1e..cc0e1fb 100644
--- a/Gemfile
+++ b/Gemfile
@@ -7,7 +7,7 @@ gem "elasticgraph-local", *elasticgraph_details
 gem "elasticgraph-query_registry", *elasticgraph_details

 # Can be elasticgraph-elasticsearch or elasticgraph-opensearch based on the datastore you want to use.
-gem "elasticgraph-elasticsearch", *elasticgraph_details
+gem "elasticgraph-opensearch", *elasticgraph_details

 gem "httpx", "~> 1.3"

Then, update the settings YAML file to configure opensearch as the cluster backend:

diff --git a/config/settings/local.yaml b/config/settings/local.yaml
index 963f4f9..16eb063 100644
--- a/config/settings/local.yaml
+++ b/config/settings/local.yaml
@@ -4,7 +4,7 @@ datastore:
     require: httpx/adapters/faraday
   clusters:
     main:
-      backend: elasticsearch
+      backend: opensearch
       url: http://localhost:9200
       settings: {}
   index_definitions: