OpenSearch

OpenSearch with Spring Boot

Full-text search with OpenSearch

Navdeep SinghFebruary 28, 202612 min read
Text size:M

OpenSearch powers full-text search and analytics. Spring Data OpenSearch simplifies indexing and querying from your Boot apps.

Docker Compose Setup

services:
  opensearch:
    image: opensearchproject/opensearch:2
    environment:
      - discovery.type=single-node
      - plugins.security.disabled=true
    ports:
      - "9200:9200"

Document Mapping

@Document(indexName = "articles")
public class ArticleDocument {
  @Id
  private String id;
  @Field(type = FieldType.Text, analyzer = "english")
  private String title;
  @Field(type = FieldType.Text)
  private String body;
}

Repository and Native Queries

public interface ArticleSearchRepository extends ElasticsearchRepository<ArticleDocument, String> {
  List<ArticleDocument> findByTitleContaining(String keyword);
}

For complex relevance scoring, use the operations API with a native JSON query:

var query = new StringQuery("""
  { "multi_match": { "query": "%s", "fields": ["title^2", "body"] } }
  """.formatted(term));
return operations.search(query, ArticleDocument.class);

Index Lifecycle

Version indexes when mappings change—reindex into articles-v2 and alias swap to avoid downtime on large corpora.