Log in
Progress0 / 30 pages0%
3.
Open Source Projects · Sub-chapter 3 · 4 min read

OpenSearch

OpenSearch

Sub-chapter 3 of Open Source Projects · Search, analytics, and vectors - under one Apache 2.0 roof

OpenSearch is one of the most consequential forks in modern open source. When Elastic relicensed Elasticsearch and Kibana to the non-OSI SSPL/Elastic License v2 in 2021, AWS forked the last Apache 2.0 release (Elasticsearch 7.10.2) and made the result a community-owned project. In September 2024 AWS handed it to the Linux Foundation as the neutral OpenSearch Software Foundation.

What makes it interesting for a fresh grad: OpenSearch is large enough to be career-shaping to contribute to, small enough that the maintainers actually read your PR, and on a topic - search + analytics + vectors - that touches every Welzin product.


TL;DR

  • What - Distributed search, analytics, and vector-database engine. Fork of Elasticsearch 7.10 + Kibana.
  • License - Apache 2.0 (the whole point of the fork).
  • Governance - OpenSearch Software Foundation under the Linux Foundation since Sep 16, 2024.
  • Components - OpenSearch (engine) + OpenSearch Dashboards (the Kibana fork).
  • Use cases - full-text search, log analytics, observability, semantic / vector search, RAG.

Why it exists

In January 2021, Elastic relicensed Elasticsearch and Kibana to the Server Side Public License (SSPL) and the Elastic License v2 - both non-OSI-approved. The change effectively prevented AWS and other cloud vendors from offering Elasticsearch as a managed service without paying Elastic. AWS responded by forking the last Apache-2.0 version (Elasticsearch 7.10.2 / Kibana 7.10.2) and renaming the result OpenSearch and OpenSearch Dashboards.

For three years, OpenSearch was AWS-controlled. In September 2024, AWS transferred ownership to a new neutral entity under the Linux Foundation - the OpenSearch Software Foundation - with SAP and Uber as Premier members alongside AWS, plus Aiven, Atlassian, Canonical, DigitalOcean, NetApp, and others. The handoff resolved the "is OpenSearch really open?" question definitively.

Adoption: 700M+ downloads, used in production at AWS, SAP, Uber, Stripe, Adobe, and thousands of smaller companies.

Architecture - the mental model

OpenSearch is a JVM-based distributed system built on Apache Lucene (the same indexing library Elasticsearch and Solr use).

text
   Documents → Index → Shards (primary + replica)
                          ↓
                       Nodes
                          ↓
                       Cluster
                          ↓
            REST/JSON API ←→ Client / Dashboards

Key concepts:

  • Index - a logical collection of documents (think: a database table).
  • Shard - index data is split into primary shards (for scale) and replica shards (for HA).
  • Node - a JVM running OpenSearch.
  • Cluster - a group of nodes that coordinate via the master node.

Plugins add capabilities: Security, Alerting, k-NN (vector search), ML Commons (model serving), Index Management, Anomaly Detection, Observability, SQL/PPL, Notifications.

OpenSearch Dashboards is the UI layer - the Kibana fork - for visualization, exploration, and managing the cluster.

For RAG / AI workloads: the k-NN plugin stores dense vector embeddings and runs approximate nearest-neighbour search. OpenSearch is one of the few major search engines where lexical (BM25) and vector retrieval coexist natively - perfect for hybrid search.

License and governance

  • License: Apache 2.0
  • Foundation: OpenSearch Software Foundation (under Linux Foundation, Sep 2024)
  • Premier members: AWS, SAP, Uber

Install and run locally

The fastest path is Docker:

bash
docker run -d --name opensearch \
  -p 9200:9200 -p 9600:9600 \
  -e "discovery.type=single-node" \
  -e "OPENSEARCH_INITIAL_ADMIN_PASSWORD=MyStrongP@ss1" \
  opensearchproject/opensearch:latest

Then talk to it:

bash
# Health check
curl -ku admin:MyStrongP@ss1 https://localhost:9200/_cluster/health

# Index a document
curl -ku admin:MyStrongP@ss1 -X PUT https://localhost:9200/welzin/_doc/1 \
  -H 'Content-Type: application/json' \
  -d '{"title": "Hello OpenSearch", "tags": ["bootcamp"]}'

# Search
curl -ku admin:MyStrongP@ss1 https://localhost:9200/welzin/_search?q=hello

For the UI, add Dashboards:

bash
docker run -d --name opensearch-dashboards \
  --link opensearch \
  -p 5601:5601 \
  -e "OPENSEARCH_HOSTS=[\"https://opensearch:9200\"]" \
  opensearchproject/opensearch-dashboards:latest

Open http://localhost:5601.

The official getting-started tutorial: docs.opensearch.org/latest/getting-started.

How to contribute

Which repo to start on:

  • opensearch-project/OpenSearch - the engine itself (Java). High bar, large codebase.
  • opensearch-project/OpenSearch-Dashboards - the UI (TypeScript/React). More approachable for web devs.
  • opensearch-project/documentation-website - docs (Markdown). The friendliest entry-point.
  • opensearch-project/ml-commons - ML plugin (Java). Interesting if you're going through Chapter VI.

Hands-on Checkpoints

  • Run OpenSearch + Dashboards locally via Docker. Index 20 documents (e.g., the chapters from this bootcamp). Search them.
  • Enable the k-NN plugin. Index dense-vector embeddings of those documents. Query by similarity.
  • Browse opensearch-project/documentation-website issues. Pick one good first issue doc fix.
  • Read the OpenSearch RFC process. Understand how new features are proposed.
  • Join the OpenSearch Slack. Lurk in #core for a week.

Further reading

Welzin opinion: Search is one of those skills that compounds quietly. If you understand how Lucene scores documents, how to tune analyzers, and how hybrid (lexical + vector) retrieval really works, you become the person on every team who can fix "search feels off." That instinct is rare and valuable.

Knowledge check

Pass 80% to unlock
0/1 answered
What is OpenSearch primarily used for?