# spring-projects/spring-data-elasticsearch

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/spring-projects-spring-data-elasticsearch).**

2,959 stars · 1,338 forks · Java · apache-2.0

## Links

- GitHub: https://github.com/spring-projects/spring-data-elasticsearch
- Homepage: https://spring.io/projects/spring-data-elasticsearch/
- awesome-repositories: https://awesome-repositories.com/repository/spring-projects-spring-data-elasticsearch.md

## Description

Spring Data Elasticsearch is a data access library that maps Java objects to Elasticsearch indices. It functions as an object mapper, a repository abstraction, and a query DSL wrapper, providing both a standard and a reactive client for executing asynchronous search and persistence operations.

The project distinguishes itself by automating data access through repository interfaces, which generate query logic based on method naming conventions. It enables the construction of complex search queries using a domain-specific language and supports advanced search capabilities such as vector similarity search, point-in-time searching, and search result highlighting.

The framework covers a broad range of capabilities including index lifecycle management, geospatial data handling, and the translation of provider-specific errors into a consistent exception hierarchy. It also supports document routing, automatic index creation via annotations, and the execution of server-side search templates.

## Tags

### Data & Databases

- [Automated Data Repositories](https://awesome-repositories.com/f/data-databases/transactional-repositories/automated-data-repositories.md) — Generates repository implementations from interface definitions to automate common data access operations. ([source](https://docs.spring.io/spring-data/elasticsearch/reference/elasticsearch.html))
- [Class-Based Schema Mappings](https://awesome-repositories.com/f/data-databases/class-based-schema-mappings.md) — Maps Java domain objects to Elasticsearch index schemas using class-level and field-level annotations.
- [Cluster Connectivity](https://awesome-repositories.com/f/data-databases/cluster-connectivity.md) — Establishes network connections to search clusters with support for SSL, timeouts, and authentication. ([source](https://docs.spring.io/spring-data/elasticsearch/reference/elasticsearch/clients.html))
- [CRUD Operations](https://awesome-repositories.com/f/data-databases/crud-operations.md) — Implements standard identifier-based CRUD operations for persisting and retrieving domain entities. ([source](https://docs.spring.io/spring-data/elasticsearch/reference/repositories/core-concepts.html))
- [Elasticsearch Connectors](https://awesome-repositories.com/f/data-databases/database-connectivity/elasticsearch-connectors.md) — Provides a comprehensive library for mapping Java objects to Elasticsearch and performing data operations.
- [Elasticsearch Client Integrations](https://awesome-repositories.com/f/data-databases/elasticsearch-client-integrations.md) — Provides a non-blocking, reactive client interface for asynchronous search and persistence operations.
- [Full Text Search](https://awesome-repositories.com/f/data-databases/full-text-search.md) — Implements complex search functionality including highlighting, geospatial queries, and vector similarity.
- [Document Retrieval Methods](https://awesome-repositories.com/f/data-databases/graph-querying/dynamic-query-execution/document-retrieval-methods.md) — Retrieves documents using dynamic finder methods and criteria with built-in support for sorting and pagination. ([source](https://docs.spring.io/spring-data/elasticsearch/reference/elasticsearch/repositories/reactive-elasticsearch-repositories.html))
- [Object-Document Mappers](https://awesome-repositories.com/f/data-databases/object-document-mappers.md) — Translates documents between JSON representations in Elasticsearch and plain Java objects using annotations.
- [Custom Query Definitions](https://awesome-repositories.com/f/data-databases/query-operators/custom-query-definitions.md) — Allows overriding automatic query generation with custom declared queries to fine-tune search logic. ([source](https://docs.spring.io/spring-data/elasticsearch/reference/repositories/query-methods-details.html))
- [Query Sorting](https://awesome-repositories.com/f/data-databases/query-sorting.md) — Applies dynamic pagination and sorting to search queries using pageable and sort parameters. ([source](https://docs.spring.io/spring-data/elasticsearch/reference/repositories/core-concepts.html))
- [Reactive Data Streams](https://awesome-repositories.com/f/data-databases/reactive-data-streams.md) — Executes non-blocking data operations and streams search results as asynchronous sequences.
- [Query Domain Specific Languages](https://awesome-repositories.com/f/data-databases/search-indexing-technologies/search-indexing/search-information-retrieval/query-interfaces-dsls/query-domain-specific-languages.md) — Provides a domain-specific language for building complex search queries and aggregations without using raw JSON.
- [Search Query Construction](https://awesome-repositories.com/f/data-databases/search-indexing/search-query-construction.md) — Constructs complex search queries and update operations using a domain-specific language. ([source](https://docs.spring.io/spring-data/elasticsearch/reference/5.5-SNAPSHOT/elasticsearch.html))
- [Object Mappings](https://awesome-repositories.com/f/data-databases/table-definitions/object-mappings.md) — Maps Java objects to search index schemas using annotations or external configuration files. ([source](https://docs.spring.io/spring-data/elasticsearch/reference/elasticsearch/misc.html))
- [Asynchronous Data Fetching](https://awesome-repositories.com/f/data-databases/asynchronous-data-fetching.md) — Returns search results as asynchronous streams or publishers to enable non-blocking application workflows. ([source](https://docs.spring.io/spring-data/elasticsearch/reference/repositories/query-return-types-reference.html))
- [Bulk Document Retrievals](https://awesome-repositories.com/f/data-databases/bulk-document-retrievals.md) — Fetches multiple documents by identifier and provides status for each individual request. ([source](https://docs.spring.io/spring-data/elasticsearch/reference/migration-guides/migration-guide-4.1-4.2.html))
- [Document CRUD Operations](https://awesome-repositories.com/f/data-databases/data-collections-datasets/collection-lifecycle-management/document-storage-managers/document-crud-operations.md) — Provides asynchronous create, read, update, and delete operations for documents mapped to search indices. ([source](https://docs.spring.io/spring-data/elasticsearch/reference/elasticsearch/reactive-template.html))
- [Document Deletion Operations](https://awesome-repositories.com/f/data-databases/data-management/document-record-handling/document-deletion-operations.md) — Removes records matching a specific search query and returns metadata about the deletion process. ([source](https://docs.spring.io/spring-data/elasticsearch/reference/migration-guides/migration-guide-4.1-4.2.html))
- [Geospatial Data Types](https://awesome-repositories.com/f/data-databases/data-querying/spatial-querying/geospatial-data-types.md) — Maps location-based types and geometries to Elasticsearch representations using standard geospatial specifications. ([source](https://docs.spring.io/spring-data/elasticsearch/reference/elasticsearch/object-mapping.html))
- [Data Type Mappings](https://awesome-repositories.com/f/data-databases/data-type-mappings.md) — Registers rules to translate between Java domain types and Elasticsearch-specific data formats. ([source](https://docs.spring.io/spring-data/elasticsearch/reference/elasticsearch/object-mapping.html))
- [JSON Query Executions](https://awesome-repositories.com/f/data-databases/json-query-executions.md) — Enables the execution of specific JSON queries using positional placeholders or expressions for dynamic parameterization. ([source](https://docs.spring.io/spring-data/elasticsearch/reference/elasticsearch/repositories/elasticsearch-repository-queries.html))
- [Result Streaming](https://awesome-repositories.com/f/data-databases/query-result-fetching/result-streaming.md) — Processes large search datasets incrementally via data streams to minimize memory consumption. ([source](https://docs.spring.io/spring-data/elasticsearch/reference/repositories/query-methods-details.html))
- [Result Set Scrolling](https://awesome-repositories.com/f/data-databases/result-set-scrolling.md) — Iterates through chunks of a large dataset to avoid loading all data into memory. ([source](https://docs.spring.io/spring-data/elasticsearch/reference/repositories/core-concepts.html))
- [Search Index Management](https://awesome-repositories.com/f/data-databases/search-index-management.md) — Automates the creation and configuration of Elasticsearch indices and mappings via annotations.
- [Automatic Index Generation](https://awesome-repositories.com/f/data-databases/search-indexing-technologies/search-indexing/search-and-indexing/indexing-automators/automatic-index-generation.md) — Automatically creates missing search indices at startup based on metadata derived from entity annotations. ([source](https://docs.spring.io/spring-data/elasticsearch/reference/elasticsearch/repositories/elasticsearch-repositories.html))
- [Point-in-Time Search](https://awesome-repositories.com/f/data-databases/search-indexing-technologies/search-indexing/search-and-indexing/point-in-time-search.md) — Creates consistent views of an index at a specific moment to ensure stable search results across requests. ([source](https://docs.spring.io/spring-data/elasticsearch/reference/elasticsearch/misc.html))
- [Index Lifecycle Management](https://awesome-repositories.com/f/data-databases/search-indexing-technologies/search-indexing/search-and-indexing/semantic-indexing-automators/index-lifecycle-management.md) — Automates the lifecycle of search indices, including creation, deletion, and the management of mappings and aliases. ([source](https://docs.spring.io/spring-data/elasticsearch/reference/elasticsearch/template.html))
- [Complex Search Querying](https://awesome-repositories.com/f/data-databases/search-indexing/complex-search-querying.md) — Implements complex search queries and aggregations by leveraging the full capabilities of the native Elasticsearch client. ([source](https://docs.spring.io/spring-data/elasticsearch/reference/elasticsearch/template.html))
- [Search Templates](https://awesome-repositories.com/f/data-databases/search-indexing/complex-search-querying/search-templates.md) — Runs pre-defined scripts stored on the Elasticsearch server to perform complex parameterized searches. ([source](https://docs.spring.io/spring-data/elasticsearch/reference/elasticsearch/misc.html))
- [Search Result Sorting](https://awesome-repositories.com/f/data-databases/search-result-sorting.md) — Orders search results using standard sorting, geographical distance, or custom rules for nested objects. ([source](https://docs.spring.io/spring-data/elasticsearch/reference/elasticsearch/misc.html))
- [Search Template Executions](https://awesome-repositories.com/f/data-databases/search-template-executions.md) — Executes predefined search templates stored in the cluster by mapping method arguments to required parameters. ([source](https://docs.spring.io/spring-data/elasticsearch/reference/elasticsearch/repositories/elasticsearch-repository-queries.html))
- [Repository Fragment Composition](https://awesome-repositories.com/f/data-databases/transactional-repositories/automated-data-repositories/repository-fragment-composition.md) — Adds custom logic to repositories by composing fragment interfaces with dedicated implementations. ([source](https://docs.spring.io/spring-data/elasticsearch/reference/repositories/custom-implementations.html))
- [Vector Similarity Search](https://awesome-repositories.com/f/data-databases/vector-similarity-search.md) — Implements k-nearest neighbor searches to find documents based on vector similarity. ([source](https://docs.spring.io/spring-data/elasticsearch/reference/migration-guides/migration-guide-5.3-5.4.html))

### Part of an Awesome List

- [Enterprise Search](https://awesome-repositories.com/f/awesome-lists/data/enterprise-search.md) — Decouples business logic from search infrastructure by using repository interfaces to manage documents.
- [Elasticsearch Integrations](https://awesome-repositories.com/f/awesome-lists/data/full-text-search-and-retrieval/elasticsearch-integrations.md) — Maps application objects to Elasticsearch indices for CRUD operations and search queries.

### Programming Languages & Runtimes

- [Query Method Derivation](https://awesome-repositories.com/f/programming-languages-runtimes/language-features-paradigms/language-features/core-conceptual-frameworks/programming-language-concepts/method-definitions/query-method-derivation.md) — Automatically generates retrieval logic based on method naming conventions to fetch specific documents. ([source](https://docs.spring.io/spring-data/elasticsearch/reference/repositories.html))

### Software Engineering & Architecture

- [Object-to-Data Mapping Frameworks](https://awesome-repositories.com/f/software-engineering-architecture/data-modeling-frameworks/object-to-data-mapping-frameworks.md) — Translates JSON documents stored in search indices into typed Java objects using annotation-based metadata. ([source](https://docs.spring.io/spring-data/elasticsearch/reference/))
- [Query Derivation Frameworks](https://awesome-repositories.com/f/software-engineering-architecture/query-derivation-frameworks.md) — Generates search queries automatically by parsing keywords and property names from repository interface method signatures.
- [Repository Proxy Implementations](https://awesome-repositories.com/f/software-engineering-architecture/repository-proxy-implementations.md) — Creates runtime implementations of data access interfaces using dynamic proxies to handle boilerplate database logic.
- [Exception Hierarchies](https://awesome-repositories.com/f/software-engineering-architecture/error-handling/exception-logic-structures/exception-hierarchies.md) — Maps provider-specific search engine error codes to a consistent hierarchy of generic exceptions.
- [Repository Injection](https://awesome-repositories.com/f/software-engineering-architecture/integration-extensibility/dependency-injection/ui-component-injection/logic-component-injection/repository-injection.md) — Supports injecting data access components into application contexts using dependency injection to manage component lifecycles. ([source](https://docs.spring.io/spring-data/elasticsearch/reference/elasticsearch/repositories/cdi-integration.html))
- [Reactive Data Streams](https://awesome-repositories.com/f/software-engineering-architecture/reactive-data-streams.md) — Integrates non-blocking clients to return search results as asynchronous publishers for event-driven workflows.
- [Result Type Mapping](https://awesome-repositories.com/f/software-engineering-architecture/typescript-type-definitions/dynamic-return-type-inference/query-result-type-inference/result-type-mapping.md) — Maps search results to primitives, collections, or custom wrappers to align with the application data model. ([source](https://docs.spring.io/spring-data/elasticsearch/reference/repositories/query-return-types-reference.html))

### Development Tools & Productivity

- [Search Result Highlighters](https://awesome-repositories.com/f/development-tools-productivity/search-result-highlighters.md) — Marks specific fields in returned documents to highlight where the search terms were matched. ([source](https://docs.spring.io/spring-data/elasticsearch/reference/elasticsearch/repositories/elasticsearch-repositories.html))

### DevOps & Infrastructure

- [Asynchronous Query Execution](https://awesome-repositories.com/f/devops-infrastructure/scheduling/asynchronous-query-execution.md) — Executes database queries in background tasks to ensure the main execution thread remains non-blocking. ([source](https://docs.spring.io/spring-data/elasticsearch/reference/repositories/query-methods-details.html))
