-
Notifications
You must be signed in to change notification settings - Fork 49
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Added guide 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. 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]> Aligned action examples with Python guide. Signed-off-by: Djcarrillo6 <[email protected]> PR change requests. Signed-off-by: Djcarrillo6 <[email protected]>
- Loading branch information
1 parent
b014ff4
commit f8ca895
Showing
5 changed files
with
167 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,69 @@ | ||
- [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"]["distribution"].ToString(), versionResponse.Body["version"]["number"].ToString()); // Distribution & Version number | ||
``` | ||
|
||
# PUT | ||
The following example creates an index. | ||
|
||
```csharp | ||
var indexBody = new | ||
{ | ||
settings = new | ||
{ | ||
index = new | ||
{ | ||
number_of_shards = 4 | ||
} | ||
} | ||
}; | ||
|
||
var putResponse = await client.LowLevel.DoRequestAsync<DynamicResponse>(HttpMethod.PUT, "/movies", CancellationToken.None, PostData.Serializable(indexBody)); | ||
Console.WriteLine(putResponse.Body["acknowledged"].ToString()); // true | ||
``` | ||
|
||
## POST | ||
The following example searches for a document. | ||
|
||
```csharp | ||
string q = "miller"; | ||
|
||
var query = new | ||
{ | ||
size = 5, | ||
query = new | ||
{ | ||
multi_match = new | ||
{ | ||
query = q, | ||
fields = new[] { "title^2", "director" } | ||
} | ||
} | ||
}; | ||
|
||
var postResponse = await client.LowLevel.DoRequestAsync<DynamicResponse>(HttpMethod.POST, "/movies/_search", CancellationToken.None, PostData.Serializable(query)); | ||
Console.WriteLine(postResponse.Body.ToString()); | ||
``` | ||
|
||
# DELETE | ||
The following example deletes an index. | ||
|
||
```csharp | ||
var deleteResponse = await client.LowLevel.DoRequestAsync<DynamicResponse>(HttpMethod.DELETE, "/movies", CancellationToken.None); | ||
Console.WriteLine(deleteResponse.Body["acknowledged"].ToString()); // true | ||
``` | ||
|
||
# Sample Code | ||
[Making Raw JSON Requests](/samples/Samples/Program.cs) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,67 @@ | ||
/* SPDX-License-Identifier: Apache-2.0 | ||
* | ||
* The OpenSearch Contributors require contributions made to | ||
* this file be licensed under the Apache-2.0 license or a | ||
* compatible open source license. | ||
*/ | ||
|
||
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"]["distribution"].ToString() + " " + versionResponse.Body["version"]["number"].ToString()); | ||
|
||
// PUT | ||
var indexBody = new | ||
{ | ||
settings = new | ||
{ | ||
index = new | ||
{ | ||
number_of_shards = 4 | ||
} | ||
} | ||
}; | ||
|
||
var putResponse = await client.LowLevel.DoRequestAsync<DynamicResponse>(HttpMethod.PUT, "/movies", CancellationToken.None, PostData.Serializable(indexBody)); | ||
|
||
// POST | ||
string q = "miller"; | ||
|
||
var query = new | ||
{ | ||
size = 5, | ||
query = new | ||
{ | ||
multi_match = new | ||
{ | ||
query = q, | ||
fields = new[] { "title^2", "director" } | ||
} | ||
} | ||
}; | ||
|
||
var postResponse = await client.LowLevel.DoRequestAsync<DynamicResponse>(HttpMethod.POST, "/movies/_search", CancellationToken.None, PostData.Serializable(query)); | ||
|
||
// DELETE | ||
var deleteResponse = await client.LowLevel.DoRequestAsync<DynamicResponse>(HttpMethod.DELETE, "/movies", CancellationToken.None); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
<Project Sdk="Microsoft.NET.Sdk"> | ||
|
||
<PropertyGroup> | ||
<OutputType>Exe</OutputType> | ||
<TargetFramework>net6.0</TargetFramework> | ||
<ImplicitUsings>enable</ImplicitUsings> | ||
<Nullable>enable</Nullable> | ||
<IsPackable>False</IsPackable> | ||
</PropertyGroup> | ||
|
||
<ItemGroup> | ||
<ProjectReference Include="$(SolutionRoot)\src\OpenSearch.Client\OpenSearch.Client.csproj" /> | ||
</ItemGroup> | ||
|
||
</Project> |