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.