Merge pull request #178 from opensearch-project/java-client
Getting started content for Java client
This commit is contained in:
commit
5890994c68
|
@ -6,9 +6,10 @@ nav_order: 60
|
|||
|
||||
# OpenSearch Java high-level REST client
|
||||
|
||||
The OpenSearch Java high-level REST client allows you to interact with your OpenSearch clusters and indices through Java methods and data structures rather than HTTP methods and JSON.
|
||||
Although the OpenSearch Java high-level REST client is still usable, we recommend that you use the [OpenSearch Java client]({{site.url}}{{site.baseurl}}/clients/java/), which replaces the existing Java high-level REST client.
|
||||
{: .note}
|
||||
|
||||
You submit requests to your cluster using request objects, which allows you to create indices, add data to documents, or complete other operations with your cluster. In return, you get back response objects that have all of the available information, such as the associated index or ID, from your cluster.
|
||||
The OpenSearch Java high-level REST client lets you interact with your OpenSearch clusters and indices through Java methods and data structures rather than HTTP methods and JSON.
|
||||
|
||||
## Setup
|
||||
|
||||
|
@ -18,7 +19,7 @@ To start using the OpenSearch Java high-level REST client, ensure that you have
|
|||
<dependency>
|
||||
<groupId>org.opensearch.client</groupId>
|
||||
<artifactId>opensearch-rest-high-level-client</artifactId>
|
||||
<version>1.1.0</version>
|
||||
<version>{{site.opensearch_version}}</version>
|
||||
</dependency>
|
||||
```
|
||||
|
||||
|
|
|
@ -0,0 +1,165 @@
|
|||
---
|
||||
layout: default
|
||||
title: OpenSearch Java client
|
||||
nav_order: 65
|
||||
---
|
||||
|
||||
# Java client
|
||||
|
||||
The OpenSearch Java client allows you to interact with your OpenSearch clusters through Java methods and data structures rather than HTTP methods and raw JSON.
|
||||
|
||||
For example, you can submit requests to your cluster using objects to create indices, add data to documents, or complete some other operation using the client's built-in methods.
|
||||
|
||||
## Setup
|
||||
|
||||
To start using the OpenSearch Java client, ensure that you have the following dependency in your project's `pom.xml` file:
|
||||
|
||||
```
|
||||
<dependency>
|
||||
<groupId>org.opensearch.client</groupId>
|
||||
<artifactId>opensearch-java</artifactId>
|
||||
<version>0.1.0</version>
|
||||
</dependency>
|
||||
```
|
||||
|
||||
If you're using Gradle, add the following dependencies to your project.
|
||||
|
||||
```
|
||||
dependencies {
|
||||
implementation 'org.opensearch.client:opensearch-rest-client: {{site.opensearch_version}}'
|
||||
implementation 'org.opensearch.client:opensearch-java:0.1.0'
|
||||
}
|
||||
```
|
||||
|
||||
You can now start your OpenSearch cluster.
|
||||
|
||||
The following example uses credentials that come with the default OpenSearch configuration. If you're using the OpenSearch Java client with your own OpenSearch cluster, be sure to change the code to use your own credentials.
|
||||
|
||||
## Sample code
|
||||
|
||||
This section uses a class called `IndexData`, which is a simple Java class that stores basic data and methods. For your own OpenSearch cluster, you might find that you need a more robust class to store your data.
|
||||
|
||||
### IndexData class
|
||||
|
||||
```java
|
||||
static class IndexData {
|
||||
private String firstName;
|
||||
private String lastName;
|
||||
|
||||
public IndexData(String firstName, String lastName) {
|
||||
this.firstName = firstName;
|
||||
this.lastName = lastName;
|
||||
}
|
||||
|
||||
public String getFirstName() {
|
||||
return firstName;
|
||||
}
|
||||
|
||||
public void setFirstName(String firstName) {
|
||||
this.firstName = firstName;
|
||||
}
|
||||
|
||||
public String getLastName() {
|
||||
return lastName;
|
||||
}
|
||||
|
||||
public void setLastName(String lastName) {
|
||||
this.lastName = lastName;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return String.format("IndexData{first name='%s', last name='%s'}", firstName, lastName);
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### OpenSearch client example
|
||||
|
||||
```java
|
||||
import org.apache.http.HttpHost;
|
||||
import org.apache.http.auth.AuthScope;
|
||||
import org.apache.http.auth.UsernamePasswordCredentials;
|
||||
import org.apache.http.client.CredentialsProvider;
|
||||
import org.apache.http.impl.client.BasicCredentialsProvider;
|
||||
import org.apache.http.impl.nio.client.HttpAsyncClientBuilder;
|
||||
import org.opensearch.client.RestClient;
|
||||
import org.opensearch.client.RestClientBuilder;
|
||||
import org.opensearch.clients.base.RestClientTransport;
|
||||
import org.opensearch.clients.base.Transport;
|
||||
import org.opensearch.clients.json.jackson.JacksonJsonpMapper;
|
||||
import org.opensearch.clients.opensearch.OpenSearchClient;
|
||||
import org.opensearch.clients.opensearch._global.IndexRequest;
|
||||
import org.opensearch.clients.opensearch._global.IndexResponse;
|
||||
import org.opensearch.clients.opensearch._global.SearchResponse;
|
||||
import org.opensearch.clients.opensearch.indices.*;
|
||||
import org.opensearch.clients.opensearch.indices.put_settings.IndexSettingsBody;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
public class OpenSearchClientExample {
|
||||
public static void main(String[] args) {
|
||||
try{
|
||||
System.setProperty("javax.net.ssl.trustStore", "/full/path/to/keystore");
|
||||
System.setProperty("javax.net.ssl.trustStorePassword", "password-to-keystore");
|
||||
|
||||
//Only for demo purposes. Don't specify your credentials in code.
|
||||
final CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
|
||||
credentialsProvider.setCredentials(AuthScope.ANY,
|
||||
new UsernamePasswordCredentials("admin", "admin"));
|
||||
|
||||
//Initialize the client with SSL and TLS enabled
|
||||
RestClient restClient = RestClient.builder(new HttpHost("localhost", 9200, "https")).
|
||||
setHttpClientConfigCallback(new RestClientBuilder.HttpClientConfigCallback() {
|
||||
@Override
|
||||
public HttpAsyncClientBuilder customizeHttpClient(HttpAsyncClientBuilder httpClientBuilder) {
|
||||
return httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider);
|
||||
}
|
||||
}).build();
|
||||
Transport transport = new RestClientTransport(restClient, new JacksonJsonpMapper());
|
||||
OpenSearchClient client = new OpenSearchClient(transport);
|
||||
|
||||
//Create the index
|
||||
String index = "sample-index";
|
||||
CreateRequest createIndexRequest = new CreateRequest.Builder().index(index).build();
|
||||
client.indices().create(createIndexRequest);
|
||||
|
||||
//Add some settings to the index
|
||||
IndexSettings indexSettings = new IndexSettings.Builder().autoExpandReplicas("0-all").build();
|
||||
IndexSettingsBody settingsBody = new IndexSettingsBody.Builder().settings(indexSettings).build();
|
||||
PutSettingsRequest putSettingsRequest = new PutSettingsRequest.Builder().index(index).value(settingsBody).build();
|
||||
client.indices().putSettings(putSettingsRequest);
|
||||
|
||||
//Index some data
|
||||
IndexData indexData = new IndexData("first_name", "Bruce");
|
||||
IndexRequest<IndexData> indexRequest = new IndexRequest.Builder<IndexData>().index(index).id("1").value(indexData).build();
|
||||
client.index(indexRequest);
|
||||
|
||||
//Search for the document
|
||||
SearchResponse<IndexData> searchResponse = client.search(s -> s.index(index), IndexData.class);
|
||||
for (int i = 0; i< searchResponse.hits().hits().size(); i++) {
|
||||
System.out.println(searchResponse.hits().hits().get(i).source());
|
||||
}
|
||||
|
||||
//Delete the document
|
||||
client.delete(b -> b.index(index).id("1"));
|
||||
|
||||
// Delete the index
|
||||
DeleteRequest deleteRequest = new DeleteRequest.Builder().index(index).build();
|
||||
DeleteResponse deleteResponse = client.indices().delete(deleteRequest);
|
||||
|
||||
restClient.close();
|
||||
} catch (IOException e){
|
||||
System.out.println(e.toString());
|
||||
} finally {
|
||||
try {
|
||||
if (client != null) {
|
||||
client.close();
|
||||
}
|
||||
} catch (IOException e) {
|
||||
System.out.println(e.toString());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
Loading…
Reference in New Issue