Skip to content

Commit

Permalink
Add extensions documentation (#4202)
Browse files Browse the repository at this point in the history
* Add extensions documentation

Signed-off-by: Fanit Kolchina <kolchfa@amazon.com>

* Editing

Signed-off-by: Fanit Kolchina <kolchfa@amazon.com>

* Update _developer-documentation/extensions.md

Co-authored-by: Chris Moore <107723039+cwillum@users.noreply.github.com>
Signed-off-by: kolchfa-aws <105444904+kolchfa-aws@users.noreply.github.com>

* Implemented doc review comments

Signed-off-by: Fanit Kolchina <kolchfa@amazon.com>

* Add more links

Signed-off-by: Fanit Kolchina <kolchfa@amazon.com>

* Update _developer-documentation/index.md

Co-authored-by: Melissa Vagi <vagimeli@amazon.com>
Signed-off-by: kolchfa-aws <105444904+kolchfa-aws@users.noreply.github.com>

* Remove javadoc until the release

Signed-off-by: Fanit Kolchina <kolchfa@amazon.com>

* Change links to hosted site

Signed-off-by: Fanit Kolchina <kolchfa@amazon.com>

---------

Signed-off-by: Fanit Kolchina <kolchfa@amazon.com>
Signed-off-by: kolchfa-aws <105444904+kolchfa-aws@users.noreply.github.com>
Co-authored-by: Chris Moore <107723039+cwillum@users.noreply.github.com>
Co-authored-by: Melissa Vagi <vagimeli@amazon.com>
  • Loading branch information
3 people authored Jul 13, 2023
1 parent f0b8660 commit fb84435
Show file tree
Hide file tree
Showing 3 changed files with 76 additions and 0 deletions.
6 changes: 6 additions & 0 deletions _config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,9 @@ collections:
external_links:
permalink: /:collection/:path/
output: true
developer-documentation:
permalink: /:collection/:path/
output: true

just_the_docs:
# Define the collections used in the theme
Expand Down Expand Up @@ -154,6 +157,9 @@ just_the_docs:
troubleshoot:
name: Troubleshooting
nav_fold: true
developer-documentation:
name: Developer documentation
nav_fold: true


# Enable or disable the site search
Expand Down
46 changes: 46 additions & 0 deletions _developer-documentation/extensions.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
---
layout: default
title: Extensions
nav_order: 10
---

# Extensions

Extensions is an experimental feature. Therefore, we do not recommend the use of extensions in a production environment. For updates on the progress of extensions, or if you want leave feedback that could help improve the feature, refer to the [issue on GitHub](https://github.com/opensearch-project/OpenSearch/issues/2447).
{: .warning}

Until extensions were introduced, plugins were the only way to extend OpenSearch functionality. However, plugins have significant shortcomings: they require frequent updates to stay up to date with OpenSearch core, they pose a security risk because they run in the same process as OpenSearch, and updating or installing them requires a full cluster restart. Moreover, plugins can fatally impact the cluster in the event of failure.

Extensions provide an easier, more secure way to customize OpenSearch. Extensions support all plugin functionality and let you build additional modular features for OpenSearch. The [OpenSearch SDK for Java](https://github.com/opensearch-project/opensearch-sdk-java/) provides the library of classes and interfaces that you can use to develop extensions. Extensions are decoupled from OpenSearch core and do not need frequent updates. Additionally, they can run in a separate process or on another node and can be installed while a cluster is running.

## Getting started

Use the following documentation to get started with extensions:

### Step 1: Learn the basics

Read the [design documentation](https://opensearch-project.github.io/opensearch-sdk-java/DESIGN.html) to learn about extension architecture and how extensions work.

### Step 2: Try it out

Try running the sample Hello World extension by following detailed steps in the [Getting started section of the Developer Guide](https://opensearch-project.github.io/opensearch-sdk-java/DEVELOPER_GUIDE.html#getting-started).

### Step 3: Create your own extension

Develop a custom create, read, update, delete (CRUD) extension by following the instructions in [this tutorial](https://opensearch-project.github.io/opensearch-sdk-java/CREATE_YOUR_FIRST_EXTENSION.html).

### Step 4: Learn how to deploy your extension

For instructions on building, testing, and running an extension, see the [Developing your own extension section of the Developer Guide](https://opensearch-project.github.io/opensearch-sdk-java/DEVELOPER_GUIDE.html#developing-your-own-extension).

<!-- TODO: add the link after the release
## Extensions Javadoc
For a complete extensions class hierarchy, see the [Javadoc](Link TBD).
-->

## Plugin migration

The [Anomaly Detection plugin](https://github.com/opensearch-project/anomaly-detection) is now [implemented as an extension](https://github.com/opensearch-project/anomaly-detection/tree/feature/extensions). For details, see [this GitHub issue](https://github.com/opensearch-project/OpenSearch/issues/3635).

For tips on migrating an existing plugin to an extension, see the [plugin migration documentation](https://opensearch-project.github.io/opensearch-sdk-java/PLUGIN_MIGRATION.html).
24 changes: 24 additions & 0 deletions _developer-documentation/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
---
layout: default
title: Developer documentation
nav_order: 1
has_children: false
has_toc: false
nav_exclude: true
---

# Developer documentation

We welcome your contributions to the OpenSearch Project. Here are some helpful links to explore the OpenSearch repositories and learn how to contribute:

- [OpenSearch Project GitHub repo](https://github.com/opensearch-project/)
- [Javadoc documentation](https://opensearch.org/javadocs/)
- [Getting started as an OpenSearch contributor](https://github.com/opensearch-project/.github/blob/main/ONBOARDING.md)
- [OpenSearch Dashboards Developer Guide](https://github.com/opensearch-project/OpenSearch-Dashboards/blob/main/DEVELOPER_GUIDE.md)
- [OpenSearch release schedule and maintenance policy](https://opensearch.org/releases.html)
- [OpenSearch Project roadmap](https://github.com/orgs/opensearch-project/projects/1)
- [OpenSearch Community Forum](https://forum.opensearch.org/)

## What's new

New in version 2.9, OpenSearch introduces _extensions_---an easier-to-develop and more secure alternative to plugins---to simplify creating custom functionality for OpenSearch. To learn more about building extensions using _OpenSearch SDK for Java_, see [Extensions]({{site.url}}{{site.baseurl}}/developer-documentation/extensions/).

0 comments on commit fb84435

Please sign in to comment.