Solving security_exception while connecting to OpenSearch Serverless using Java SDK

Problem: We have a container pod running with a IAM role that has OpenSearch Serverless read/write data access on both collection items & indexes. Java application running within the container tries to access OpenSearch Serverless using standard opensearch-java & AWS Java sdks.But problem is that the Java client call to OpenSearch Serverless is failing with … Read more

How to Enable External Version Support for OpenSearch Update Request

OpenSearch doesn’t support external versioning in Update request as of now. If you use HTTP command similar to below, you will get exception mentioned there. index1/_update/1?version=123&version_type=external { “doc”: {“title”: “updated title”}, } Validation Failed: 1: internal versioning can not be used for optimistic concurrency control. Please use if_seq_no and if_primary_term instead seq_no: Counter which gets … Read more

How to do Upsert Operation in OpenSearch

We will learn how to do upsert operation in OpenSearch. There are couple of ways to do it, one using Index operation & another using Update operation. But how they work is different. So we will have to choose carefully based on our use case. Upsert using Index operation: Index operation by default does upsert. … Read more

How to Write OpenSearch Bulk Operation Using Java SDK

Here we will learn the basic code to do bulk operation in OpenSearch using Java SDK. We will need below dependencies in our Gradle project. This is part of build.gradle file. implementation ‘org.opensearch.client:opensearch-rest-client: 2.3.0’ implementation ‘org.opensearch.client:opensearch-java:2.0.0’ For maven projects, we need to add the dependencies in pom.xml file. As we know, OpenSearch provides bulk operation … Read more

How to Write OpenSearch Multi-Match Query in Java

Here we will see how to write OpenSearch multi-match query using Java SDK. OpenSearch multi-match query is supported for String type fields only. We will write code in Java to implement that. Also, we will write some Java code which can be used to emulate multi-match query for non-String data type fields like Integer, Long, … Read more

How to Instantiate OpenSearch Client in Java

Here we will learn how to create OpenSearch client using Java SDK. We will see how to connect to an OpenSearch cluster from a Java application for both AWS & non-AWS environments. OpenSearchClient for non-AWS environment: For a Gradle project, we need to add below dependencies in build.gradle file. For maven project, we would need … Read more

Connecting to LocalStack OpenSearch from localhost Docker container

As I mentioned earlier, I use LocalStack to emulate AWS services during development phase. It works more or less well. Recently I faced a problem with LocalStack OpenSearch instance. I created one OpenSearch cluster using LocalStack. My LocalStack is installed via docker-compose file & it runs in a container. Now I have developed a Java … Read more