Skip to content

Commit

Permalink
Added guide for using raw JSON REST requests with low-level client.
Browse files Browse the repository at this point in the history
Signed-off-by: Djcarrillo6 <[email protected]>

Added sample for using raw JSON REST requests with low-level client.

Signed-off-by: Djcarrillo6 <[email protected]>

Added sample for using raw JSON REST requests with low-level client #2

Signed-off-by: Djcarrillo6 <[email protected]>

Created new samples project & PR review changes.

Signed-off-by: Djcarrillo6 <[email protected]>
  • Loading branch information
Djcarrillo6 committed Nov 2, 2023
1 parent b014ff4 commit cc3e190
Show file tree
Hide file tree
Showing 5 changed files with 130 additions and 0 deletions.
9 changes: 9 additions & 0 deletions OpenSearch.sln
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,10 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenSearch.Stack.ArtifactsA
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{22DF419F-9A90-4317-957D-E239EB3F95DF}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "samples", "samples", "{E89FE975-FA94-405F-B748-BF2EC8AFFEEE}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Samples", "samples\Samples\Samples.csproj", "{0D084660-06BF-4F3A-A041-DAAB4837378F}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Expand Down Expand Up @@ -137,6 +141,7 @@ Global
{22DF419F-9A90-4317-957D-E239EB3F95DF} = {87ABA679-F3F4-48CE-82B3-1AAE5D0A5935}
{C80D225C-F072-4B24-9ACE-82EFD9362237} = {22DF419F-9A90-4317-957D-E239EB3F95DF}
{1F5A7B1A-2566-481F-91B5-A63D7F939973} = {22DF419F-9A90-4317-957D-E239EB3F95DF}
{0D084660-06BF-4F3A-A041-DAAB4837378F} = {E89FE975-FA94-405F-B748-BF2EC8AFFEEE}
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{5B393962-7586-49BA-BD99-3B1E35F48E94}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
Expand Down Expand Up @@ -231,5 +236,9 @@ Global
{E7C0BDC2-28AD-4582-8FEA-0F6327A42C0E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{E7C0BDC2-28AD-4582-8FEA-0F6327A42C0E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E7C0BDC2-28AD-4582-8FEA-0F6327A42C0E}.Release|Any CPU.Build.0 = Release|Any CPU
{0D084660-06BF-4F3A-A041-DAAB4837378F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0D084660-06BF-4F3A-A041-DAAB4837378F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0D084660-06BF-4F3A-A041-DAAB4837378F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0D084660-06BF-4F3A-A041-DAAB4837378F}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
EndGlobal
6 changes: 6 additions & 0 deletions USER_GUIDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -303,3 +303,9 @@ var client = new OpenSearchLowLevelClient(config);
```

Note the main difference here is that we are instantiating an `OpenSearchLowLevelClient` rather than `OpenSearchClient`, and `ConnectionConfiguration` instead of `ConnectionSettings`.


## Advanced Features

- [Making Raw JSON Requests](guides/json.md)
- [Sample Code](/samples/Samples/Program.cs)
52 changes: 52 additions & 0 deletions guides/json.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
- [Making Raw JSON REST Requests](#making-raw-json-rest-requests)
- [GET](#get)
- [PUT](#put)
- [POST](#post)
- [DELETE](#delete)

# Making Raw JSON REST Requests
OpenSearch exposes a REST API that you can use to interact with OpenSearch. The OpenSearch .NET client provides a low-level API that allows you to send raw JSON requests to OpenSearch. This API is useful if you want to use a feature that is not yet supported by the OpenSearch .NET client, but it supported by the OpenSearch REST API.

## GET
The following example returns the server version information via `GET /`.

```csharp
var versionResponse = await client.LowLevel.DoRequestAsync<DynamicResponse>(HttpMethod.GET, "/", CancellationToken.None);
Console.WriteLine(versionResponse.Body["version"]["number"].ToString()); // Version number
```

## POST
The following example creates a document via `POST /movies/_doc` with a request body that specifies the document to create.

```csharp
var postResponse = await client.LowLevel.DoRequestAsync<DynamicResponse>(HttpMethod.POST, "/movies/_doc", CancellationToken.None, PostData.Serializable(
new
{
title = "The Dark Knight 6",
director = "Christopher Nolan",
year = 2012
}));
Console.WriteLine(postResponse.Body["result"].ToString()); // created
```

# PUT
The following example creates a document via `PUT /movies/_doc/{id}` with a request body that specifies the document to create.

```csharp
var putResponse = await client.LowLevel.DoRequestAsync<DynamicResponse>(HttpMethod.PUT, "/movies/_doc/1", CancellationToken.None, PostData.Serializable(
new
{
title = "The Dark Knight 6",
director = "Christopher Nolan",
year = 2023
}));
Console.WriteLine(putResponse.Body["result"].ToString()); // created
```

# DELETE
The following example deletes a document via `DELETE /movies/_doc/{id}`.

```csharp
var deleteResponse = await client.LowLevel.DoRequestAsync<DynamicResponse>(HttpMethod.DELETE, "/movies/_doc/1", CancellationToken.None);
Console.WriteLine(deleteResponse.Body["result"].ToString()); // deleted
```
49 changes: 49 additions & 0 deletions samples/Samples/Program.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
using OpenSearch.Client;
using OpenSearch.Net;
using HttpMethod = OpenSearch.Net.HttpMethod;


public class Program
{
public static async Task Main(string[] args)
{
var node = new Uri("https://localhost:9200");
var config = new ConnectionSettings(node)
.ServerCertificateValidationCallback(CertificateValidations.AllowAll)
.BasicAuthentication("admin", "admin")
.DisableDirectStreaming();

var client = new OpenSearchClient(config);


// Sample Code: Making Raw JSON Requests

// GET
var versionResponse = await client.LowLevel.DoRequestAsync<DynamicResponse>(HttpMethod.GET, "/", CancellationToken.None);
Console.WriteLine(versionResponse.Body["version"]["number"].ToString()); // Version number

// Post
var postResponse = await client.LowLevel.DoRequestAsync<DynamicResponse>(HttpMethod.POST, "/movies/_doc", CancellationToken.None, PostData.Serializable(
new
{
title = "The Dark Knight",
director = "Christopher Nolan",
year = 2012
}));
Console.WriteLine(postResponse.Body["result"].ToString()); // created

// PUT
var putResponse = await client.LowLevel.DoRequestAsync<DynamicResponse>(HttpMethod.PUT, "/movies/_doc/1", CancellationToken.None, PostData.Serializable(
new
{
title = "The Dark Knight 2",
director = "Christopher Nolan",
year = 2012
}));
Console.WriteLine(putResponse.Body["result"].ToString()); // created

// DELETE
var deleteResponse = await client.LowLevel.DoRequestAsync<DynamicResponse>(HttpMethod.DELETE, "/movies/_doc/1", CancellationToken.None);
Console.WriteLine(deleteResponse.Body["result"].ToString()); // deleted
}
}
14 changes: 14 additions & 0 deletions samples/Samples/Samples.csproj
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net6.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="OpenSearch.Client" Version="1.*" />
</ItemGroup>

</Project>

0 comments on commit cc3e190

Please sign in to comment.