Compare commits
176 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| ec1186119a | |||
| f2e00278cb | |||
| c300d462ac | |||
| 216e90f4a7 | |||
| d58e5a7173 | |||
| e4be6d82d5 | |||
| 08ea0bb6d9 | |||
| aeda13f920 | |||
| 270a5e2fca | |||
| de0eadc72b | |||
| 33bf5d505d | |||
| 9667d10933 | |||
| 008074118a | |||
| 94b0d04d70 | |||
| 6f9f12e348 | |||
| 1b4ec95616 | |||
| f409e3ced3 | |||
| d1b80ac7f4 | |||
| 3c264913b5 | |||
| e1d40ded31 | |||
| c824179773 | |||
| 10b43450d5 | |||
| 26e7d37a7a | |||
| 86fc1294d5 | |||
| 1f2dbb0505 | |||
| 2c9ff93d11 | |||
| da0e859d1f | |||
| 0abb2cd979 | |||
| c8c052c6ff | |||
| 8aa90425a7 | |||
| 1ad6542204 | |||
| 01474cd713 | |||
| d621431516 | |||
| 6faa70b0b2 | |||
| 0bcbc45373 | |||
| 79321965f8 | |||
| e1f81f0c42 | |||
| 983e0e552c | |||
| d9028609a8 | |||
| 3e2b114c5d | |||
| 6662e29aa5 | |||
| 0b9cfca28f | |||
| f985e1efe5 | |||
| 8f6fca5b43 | |||
| 0471b54d3b | |||
| 1302c14920 | |||
| 66894a5b0e | |||
| 00c99852fa | |||
| 4152378d32 | |||
| 3fca4e8be3 | |||
| 91f3393abc | |||
| eee009fc18 | |||
| e394464724 | |||
| 47815a69fb | |||
| 01ca42fd2e | |||
| 604c88b6a4 | |||
| ed05313b17 | |||
| 822843a93a | |||
| 7f7731acdc | |||
| a0ee571cc7 | |||
| 5bbccbf9d0 | |||
| 19af94f87e | |||
| 71a3e24096 | |||
| 23eacd4d4b | |||
| 56bda34666 | |||
| 76ba2324a2 | |||
| 4c217fa9c4 | |||
| 003213d4b0 | |||
| 85d52014dc | |||
| 786e0928ed | |||
| ef6f091d6b | |||
| 9ff829a829 | |||
| 30f32b6bbe | |||
| 8ce113a083 | |||
| 262781c0a0 | |||
| ffe8293365 | |||
| 62a34cf09c | |||
| cc5f149c5a | |||
| 0728c8e4aa | |||
| ebbe242a72 | |||
| 0ce9a1c400 | |||
| 22763d17a7 | |||
| 9870de1e77 | |||
| 8c9d9ae1e7 | |||
| 945179e4eb | |||
| ea38ef1d41 | |||
| acbfba94ac | |||
| 5a0f556a3b | |||
| a07ac3c93d | |||
| 9d025dd469 | |||
| 925921f174 | |||
| 2f0a259045 | |||
| 9ffcb092db | |||
| 0e5af90581 | |||
| 95059b3282 | |||
| 1ae6301c2f | |||
| 2366f67bba | |||
| 6f424318ec | |||
| 300fe2ac8b | |||
| 1fdee7399f | |||
| ace17b9751 | |||
| 42383624ea | |||
| 35e7b45f1a | |||
| 89f60f2356 | |||
| fa979249fc | |||
| 8b43af2d33 | |||
| 64f88ae9ac | |||
| 15f086359d | |||
| 78ea67b6a6 | |||
| 6d0825b121 | |||
| 846344891d | |||
| f9f64e6b39 | |||
| 7fe4d8e1a4 | |||
| bd87dae1a3 | |||
| ea62cf0abd | |||
| cb77b328ae | |||
| 5568c7bbc4 | |||
| 03591326d7 | |||
| a94b74c877 | |||
| 944e7e81dd | |||
| 5f297f1dc3 | |||
| 028239fbdb | |||
| 01d2d24916 | |||
| 4f159d5de5 | |||
| 00f13ac3e9 | |||
| 6f3941b43b | |||
| bfd3c35d93 | |||
| f5b29cb524 | |||
| 7f5bfffc34 | |||
| 61176940cb | |||
| 24618ecfbe | |||
| 3e2c67a39f | |||
| d2ab03e6a4 | |||
| 172933af8e | |||
| 378dcabe19 | |||
| 893c9cbf92 | |||
| 3157c62198 | |||
| fe8c2b13b0 | |||
| 98716a871b | |||
| d55947b81e | |||
| 6cb5f92928 | |||
| b4ab1f28cd | |||
| aab66c9595 | |||
| d06c122fd5 | |||
| b1b232d354 | |||
| 555b570246 | |||
| 81eb167981 | |||
| 6ad98bf500 | |||
| 9149c1bc2e | |||
| d079a59cb4 | |||
| 7a7145e5b1 | |||
| dbf932cb20 | |||
| 738ee54a25 | |||
| 03992ba722 | |||
| 06de217ceb | |||
| eba8eec6c3 | |||
| 3fc19bbe8c | |||
| 8f8600727c | |||
| 95e028a1e9 | |||
| dd156b9e29 | |||
| 8d0ecf2aa3 | |||
| 4cc80abcd8 | |||
| eca6a7ec77 | |||
| d9d1b73dad | |||
| d101eebc6d | |||
| 4ef5af1f2d | |||
| fade919be6 | |||
| 687b014e70 | |||
| 9d139299b2 | |||
| 161439ae22 | |||
| fbe54e485b | |||
| 86e0e660be | |||
| 5ebe9f4492 | |||
| e997b39f68 | |||
| 41e32576e3 | |||
| 82c4ea1391 |
@@ -0,0 +1,83 @@
|
|||||||
|
= Spring Data for Elasticsearch image:https://img.shields.io/badge/Revved%20up%20by-Develocity-06A0CE?logo=Gradle&labelColor=02303A["Revved up by Develocity", link="https://ge.spring.io/scans?search.rootProjectNames=Spring Data Elasticsearch"]
|
||||||
|
|
||||||
|
The primary goal of the https://projects.spring.io/spring-data[Spring Data] project is to make it easier to build Spring-powered applications that use new data access technologies such as non-relational databases, map-reduce frameworks, and cloud based data services.
|
||||||
|
|
||||||
|
The Spring Data Elasticsearch project provides integration with the https://www.elastic.co/[Elasticsearch] search engine.
|
||||||
|
Key functional areas of Spring Data Elasticsearch are a POJO centric model for interacting with Elasticsearch Documents and easily writing a Repository style data access layer.
|
||||||
|
|
||||||
|
This project is lead and maintained by the community.
|
||||||
|
|
||||||
|
== Features
|
||||||
|
|
||||||
|
* Spring configuration support using Java based `@Configuration` classes or an XML namespace for an ES client instances.
|
||||||
|
* `ElasticsearchOperations` class and implementations that increases productivity performing common ES operations.
|
||||||
|
Includes integrated object mapping between documents and POJOs.
|
||||||
|
* Feature Rich Object Mapping integrated with Spring’s Conversion Service
|
||||||
|
* Annotation based mapping metadata
|
||||||
|
* Automatic implementation of `Repository` interfaces including support for custom search methods.
|
||||||
|
* CDI support for repositories
|
||||||
|
|
||||||
|
include::https://raw.githubusercontent.com/spring-projects/spring-data-build/refs/heads/main/etc/readme/code-of-conduct.adoc[]
|
||||||
|
|
||||||
|
== Getting Started
|
||||||
|
|
||||||
|
Here is a quick teaser of an application using Spring Data Repositories in Java:
|
||||||
|
|
||||||
|
[source,java]
|
||||||
|
----
|
||||||
|
public interface PersonRepository extends CrudRepository<Person, Long> {
|
||||||
|
|
||||||
|
List<Person> findByLastname(String lastname);
|
||||||
|
|
||||||
|
List<Person> findByFirstnameLike(String firstname);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Service
|
||||||
|
public class MyService {
|
||||||
|
|
||||||
|
private final PersonRepository repository;
|
||||||
|
|
||||||
|
public MyService(PersonRepository repository) {
|
||||||
|
this.repository = repository;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void doWork() {
|
||||||
|
|
||||||
|
repository.deleteAll();
|
||||||
|
|
||||||
|
Person person = new Person();
|
||||||
|
person.setFirstname("Oliver");
|
||||||
|
person.setLastname("Gierke");
|
||||||
|
repository.save(person);
|
||||||
|
|
||||||
|
List<Person> lastNameResults = repository.findByLastname("Gierke");
|
||||||
|
List<Person> firstNameResults = repository.findByFirstnameLike("Oli");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
----
|
||||||
|
|
||||||
|
=== Using the RestClient
|
||||||
|
|
||||||
|
Please check the https://docs.spring.io/spring-data/elasticsearch/docs/current/reference/html/#elasticsearch.clients.configuration[official documentation].
|
||||||
|
|
||||||
|
include::https://raw.githubusercontent.com/spring-projects/spring-data-build/refs/heads/main/etc/readme/dependencies.adoc[]
|
||||||
|
|
||||||
|
**Compatibility Matrix**
|
||||||
|
|
||||||
|
The compatibility between Spring Data Elasticsearch, Elasticsearch client drivers and Spring Boot versions can be found in the https://docs.spring.io/spring-data/elasticsearch/docs/current/reference/html/#preface.versions[reference documentation].
|
||||||
|
|
||||||
|
To use the Release candidate versions of the upcoming major version, use our Maven milestone repository and declare the appropriate dependency version:
|
||||||
|
|
||||||
|
[source,xml]
|
||||||
|
----
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework.data</groupId>
|
||||||
|
<artifactId>spring-data-elasticsearch</artifactId>
|
||||||
|
<version>${version}.RCx</version> <!-- x being 1, 2, ... -->
|
||||||
|
</dependency>
|
||||||
|
----
|
||||||
|
|
||||||
|
include::https://raw.githubusercontent.com/spring-projects/spring-data-build/refs/heads/main/etc/readme/getting-help.adoc[]
|
||||||
|
|
||||||
|
include::https://raw.githubusercontent.com/spring-projects/spring-data-build/refs/heads/main/etc/readme/license.adoc[]
|
||||||
|
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
name: CI Build
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
push:
|
||||||
|
branches: [ 5.5.x, 'issue/5.5.x/**' ]
|
||||||
|
|
||||||
|
permissions: read-all
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build-java:
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
java-version: [ base, next ]
|
||||||
|
name: Build project
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v6
|
||||||
|
- name: Setup Java and Maven
|
||||||
|
uses: spring-projects/spring-data-build/actions/setup-maven@3.5.x
|
||||||
|
with:
|
||||||
|
java-version: ${{ matrix.java-version }}
|
||||||
|
develocity-access-key: '${{ secrets.DEVELOCITY_ACCESS_KEY }}'
|
||||||
|
- name: Build
|
||||||
|
uses: spring-projects/spring-data-build/actions/maven-build@3.5.x
|
||||||
|
env:
|
||||||
|
TESTCONTAINERS_REUSE_ENABLE: true
|
||||||
|
with:
|
||||||
|
settings-xml: '${{ vars.SETTINGS_XML }}'
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
# GitHub Actions for CodeQL Scanning
|
||||||
|
|
||||||
|
name: "CodeQL Advanced"
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
pull_request:
|
||||||
|
workflow_dispatch:
|
||||||
|
schedule:
|
||||||
|
# https://docs.github.com/en/actions/writing-workflows/choosing-when-your-workflow-runs/events-that-trigger-workflows#schedule
|
||||||
|
- cron: '0 5 * * *'
|
||||||
|
|
||||||
|
permissions: read-all
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
codeql-analysis-call:
|
||||||
|
permissions:
|
||||||
|
actions: read
|
||||||
|
contents: read
|
||||||
|
security-events: write
|
||||||
|
uses: spring-io/github-actions/.github/workflows/codeql-analysis.yml@1
|
||||||
@@ -0,0 +1,45 @@
|
|||||||
|
# GitHub Actions to automate GitHub issues for Spring Data Project Management
|
||||||
|
|
||||||
|
name: Spring Data GitHub Issues
|
||||||
|
|
||||||
|
on:
|
||||||
|
issues:
|
||||||
|
types: [opened, edited, reopened]
|
||||||
|
issue_comment:
|
||||||
|
types: [created]
|
||||||
|
pull_request_target:
|
||||||
|
types: [opened, edited, reopened]
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
issues: write
|
||||||
|
pull-requests: write
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
Inbox:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
if: vars.PROJECT_CARDS_ENABLED == 'true' && github.repository_owner == 'spring-projects' && (github.event.action == 'opened' || github.event.action == 'reopened') && github.event.pull_request == null && !contains(join(github.event.issue.labels.*.name, ', '), 'dependency-upgrade') && !contains(github.event.issue.title, 'Release ')
|
||||||
|
steps:
|
||||||
|
- name: Create or Update Issue Card
|
||||||
|
uses: actions/add-to-project@v1.0.2
|
||||||
|
with:
|
||||||
|
project-url: https://github.com/orgs/spring-projects/projects/25
|
||||||
|
github-token: ${{ secrets.GH_ISSUES_TOKEN_SPRING_DATA }}
|
||||||
|
Pull-Request:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
if: vars.PROJECT_CARDS_ENABLED == 'true' && github.repository_owner == 'spring-projects' && (github.event.action == 'opened' || github.event.action == 'reopened') && github.event.pull_request != null
|
||||||
|
steps:
|
||||||
|
- name: Create or Update Pull Request Card
|
||||||
|
uses: actions/add-to-project@v1.0.2
|
||||||
|
with:
|
||||||
|
project-url: https://github.com/orgs/spring-projects/projects/25
|
||||||
|
github-token: ${{ secrets.GH_ISSUES_TOKEN_SPRING_DATA }}
|
||||||
|
Feedback-Provided:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
if: vars.PROJECT_CARDS_ENABLED == 'true' && github.repository_owner == 'spring-projects' && github.event_name == 'issue_comment' && github.event.action == 'created' && github.actor != 'spring-projects-issues' && github.event.pull_request == null && github.event.issue.state == 'open' && contains(toJSON(github.event.issue.labels), 'waiting-for-feedback')
|
||||||
|
steps:
|
||||||
|
- name: Update Project Card
|
||||||
|
uses: actions/add-to-project@v1.0.2
|
||||||
|
with:
|
||||||
|
project-url: https://github.com/orgs/spring-projects/projects/25
|
||||||
|
github-token: ${{ secrets.GH_ISSUES_TOKEN_SPRING_DATA }}
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
name: Snapshots
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
push:
|
||||||
|
branches: [ 5.5.x, 'issue/5.5.x/**' ]
|
||||||
|
|
||||||
|
permissions: read-all
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build-snapshots:
|
||||||
|
name: Build and deploy snapshots
|
||||||
|
if: ${{ github.repository_owner == 'spring-projects' }}
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v6
|
||||||
|
- name: Setup Java and Maven
|
||||||
|
uses: spring-projects/spring-data-build/actions/setup-maven@3.5.x
|
||||||
|
with:
|
||||||
|
develocity-access-key: '${{ secrets.DEVELOCITY_ACCESS_KEY }}'
|
||||||
|
- name: Deploy to Artifactory
|
||||||
|
uses: spring-projects/spring-data-build/actions/maven-artifactory-deploy@3.5.x
|
||||||
|
env:
|
||||||
|
TESTCONTAINERS_REUSE_ENABLE: true
|
||||||
|
with:
|
||||||
|
build-name: 'spring-data-elasticsearch'
|
||||||
|
username: '${{ secrets.ARTIFACTORY_USERNAME }}'
|
||||||
|
password: '${{ secrets.ARTIFACTORY_PASSWORD }}'
|
||||||
|
context-url: '${{ vars.ARTIFACTORY_CONTEXT_URL }}'
|
||||||
|
repository: '${{ vars.ARTIFACTORY_REPOSITORY }}'
|
||||||
|
project: '${{ vars.ARTIFACTORY_PROJECT }}'
|
||||||
|
settings-xml: '${{ vars.SETTINGS_XML }}'
|
||||||
+2
-2
@@ -30,7 +30,7 @@ target
|
|||||||
build/
|
build/
|
||||||
node_modules
|
node_modules
|
||||||
node
|
node
|
||||||
package.json
|
|
||||||
package-lock.json
|
package-lock.json
|
||||||
|
|
||||||
.mvn/.gradle-enterprise
|
.mvn/.develocity
|
||||||
|
/src/test/resources/testcontainers-local.properties
|
||||||
|
|||||||
+3
-8
@@ -1,13 +1,8 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<extensions>
|
<extensions>
|
||||||
<extension>
|
<extension>
|
||||||
<groupId>com.gradle</groupId>
|
<groupId>io.spring.develocity.conventions</groupId>
|
||||||
<artifactId>gradle-enterprise-maven-extension</artifactId>
|
<artifactId>develocity-conventions-maven-extension</artifactId>
|
||||||
<version>1.19.2</version>
|
<version>0.0.25</version>
|
||||||
</extension>
|
|
||||||
<extension>
|
|
||||||
<groupId>com.gradle</groupId>
|
|
||||||
<artifactId>common-custom-user-data-maven-extension</artifactId>
|
|
||||||
<version>1.12.4</version>
|
|
||||||
</extension>
|
</extension>
|
||||||
</extensions>
|
</extensions>
|
||||||
|
|||||||
@@ -1,31 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
|
|
||||||
<gradleEnterprise
|
|
||||||
xmlns="https://www.gradle.com/gradle-enterprise-maven" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
||||||
xsi:schemaLocation="https://www.gradle.com/gradle-enterprise-maven https://www.gradle.com/schema/gradle-enterprise-maven.xsd">
|
|
||||||
<server>
|
|
||||||
<url>https://ge.spring.io</url>
|
|
||||||
</server>
|
|
||||||
<buildScan>
|
|
||||||
<backgroundBuildScanUpload>false</backgroundBuildScanUpload>
|
|
||||||
<captureGoalInputFiles>true</captureGoalInputFiles>
|
|
||||||
<publishIfAuthenticated>true</publishIfAuthenticated>
|
|
||||||
<obfuscation>
|
|
||||||
<ipAddresses>#{{'0.0.0.0'}}</ipAddresses>
|
|
||||||
</obfuscation>
|
|
||||||
</buildScan>
|
|
||||||
<buildCache>
|
|
||||||
<local>
|
|
||||||
<enabled>true</enabled>
|
|
||||||
</local>
|
|
||||||
<remote>
|
|
||||||
<server>
|
|
||||||
<credentials>
|
|
||||||
<username>${env.GRADLE_ENTERPRISE_CACHE_USERNAME}</username>
|
|
||||||
<password>${env.GRADLE_ENTERPRISE_CACHE_PASSWORD}</password>
|
|
||||||
</credentials>
|
|
||||||
</server>
|
|
||||||
<enabled>true</enabled>
|
|
||||||
<storeEnabled>#{env['GRADLE_ENTERPRISE_CACHE_USERNAME'] != null and env['GRADLE_ENTERPRISE_CACHE_PASSWORD'] != null}</storeEnabled>
|
|
||||||
</remote>
|
|
||||||
</buildCache>
|
|
||||||
</gradleEnterprise>
|
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
--add-exports jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED
|
||||||
|
--add-exports jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED
|
||||||
|
--add-exports jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED
|
||||||
|
--add-exports jdk.compiler/com.sun.tools.javac.model=ALL-UNNAMED
|
||||||
|
--add-exports jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED
|
||||||
|
--add-exports jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED
|
||||||
|
--add-exports jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED
|
||||||
|
--add-exports jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED
|
||||||
|
--add-opens jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED
|
||||||
|
--add-opens jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED
|
||||||
|
--add-opens=java.base/java.util=ALL-UNNAMED
|
||||||
|
--add-opens=java.base/java.lang.reflect=ALL-UNNAMED
|
||||||
|
--add-opens=java.base/java.text=ALL-UNNAMED
|
||||||
|
--add-opens=java.desktop/java.awt.font=ALL-UNNAMED
|
||||||
+2
-2
@@ -1,3 +1,3 @@
|
|||||||
#Thu Dec 14 08:40:44 CET 2023
|
#Tue Jun 02 15:00:44 CEST 2026
|
||||||
|
distributionUrl=https\://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.16/apache-maven-3.9.16-bin.zip
|
||||||
wrapperUrl=https\://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar
|
wrapperUrl=https\://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar
|
||||||
distributionUrl=https\://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.6/apache-maven-3.9.6-bin.zip
|
|
||||||
|
|||||||
@@ -1,43 +1,5 @@
|
|||||||
= Continuous Integration
|
= Continuous Integration
|
||||||
|
|
||||||
image:https://jenkins.spring.io/buildStatus/icon?job=spring-data-elasticsearch%2Fmain&subject=2020.0.0%20(main)[link=https://jenkins.spring.io/view/SpringData/job/spring-data-elasticsearch/]
|
|
||||||
image:https://jenkins.spring.io/buildStatus/icon?job=spring-data-elasticsearch%2F4.0.x&subject=Neumann%20(4.0.x)[link=https://jenkins.spring.io/view/SpringData/job/spring-data-elasticsearch/]
|
|
||||||
image:https://jenkins.spring.io/buildStatus/icon?job=spring-data-elasticsearch%2F3.2.x&subject=Moore%20(3.2.x)[link=https://jenkins.spring.io/view/SpringData/job/spring-data-elasticsearch/]
|
|
||||||
|
|
||||||
== Running CI tasks locally
|
== Running CI tasks locally
|
||||||
|
|
||||||
Since this pipeline is purely Docker-based, it's easy to:
|
You can run CI jobs locally using Docker and act[https://nektosact.com/].
|
||||||
|
|
||||||
* Debug what went wrong on your local machine.
|
|
||||||
* Test out a a tweak to your `verify.sh` script before sending it out.
|
|
||||||
* Experiment against a new image before submitting your pull request.
|
|
||||||
|
|
||||||
All of these use cases are great reasons to essentially run what the CI server does on your local machine.
|
|
||||||
|
|
||||||
IMPORTANT: To do this you must have Docker installed on your machine.
|
|
||||||
|
|
||||||
1. `docker run -it --mount type=bind,source="$(pwd)",target=/spring-data-elasticsearch-github adoptopenjdk/openjdk8:latest /bin/bash`
|
|
||||||
+
|
|
||||||
This will launch the Docker image and mount your source code at `spring-data-elasticsearch-github`.
|
|
||||||
+
|
|
||||||
2. `cd spring-data-elasticsearch-github`
|
|
||||||
+
|
|
||||||
Next, run your tests from inside the container:
|
|
||||||
+
|
|
||||||
3. `./mvnw clean dependency:list test -Dsort` (or whatever profile you need to test out)
|
|
||||||
|
|
||||||
Since the container is binding to your source, you can make edits from your IDE and continue to run build jobs.
|
|
||||||
|
|
||||||
If you need to package things up, do this:
|
|
||||||
|
|
||||||
1. `docker run -it -v /var/run/docker.sock:/var/run/docker.sock --mount type=bind,source="$(pwd)",target=/spring-data-elasticsearch-github adoptopenjdk/openjdk8:latest /bin/bash`
|
|
||||||
+
|
|
||||||
This will launch the Docker image and mount your source code at `spring-data-elasticsearch-github`.
|
|
||||||
+
|
|
||||||
2. `cd spring-data-elasticsearch-github`
|
|
||||||
+
|
|
||||||
Next, try to package everything up from inside the container:
|
|
||||||
+
|
|
||||||
3. `./mvnw -Pci,snapshot -Dmaven.test.skip=true clean package`
|
|
||||||
|
|
||||||
NOTE: Docker containers can eat up disk space fast! From time to time, run `docker system prune` to clean out old images.
|
|
||||||
|
|||||||
Vendored
-130
@@ -1,130 +0,0 @@
|
|||||||
def p = [:]
|
|
||||||
node {
|
|
||||||
checkout scm
|
|
||||||
p = readProperties interpolate: true, file: 'ci/pipeline.properties'
|
|
||||||
}
|
|
||||||
|
|
||||||
pipeline {
|
|
||||||
agent none
|
|
||||||
|
|
||||||
triggers {
|
|
||||||
pollSCM 'H/10 * * * *'
|
|
||||||
upstream(upstreamProjects: "spring-data-commons/main", threshold: hudson.model.Result.SUCCESS)
|
|
||||||
}
|
|
||||||
|
|
||||||
options {
|
|
||||||
disableConcurrentBuilds()
|
|
||||||
buildDiscarder(logRotator(numToKeepStr: '14'))
|
|
||||||
}
|
|
||||||
|
|
||||||
stages {
|
|
||||||
stage("test: baseline (main)") {
|
|
||||||
when {
|
|
||||||
beforeAgent(true)
|
|
||||||
anyOf {
|
|
||||||
branch(pattern: "main|(\\d\\.\\d\\.x)", comparator: "REGEXP")
|
|
||||||
not { triggeredBy 'UpstreamCause' }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
agent {
|
|
||||||
label 'data'
|
|
||||||
}
|
|
||||||
options { timeout(time: 30, unit: 'MINUTES') }
|
|
||||||
|
|
||||||
environment {
|
|
||||||
ARTIFACTORY = credentials("${p['artifactory.credentials']}")
|
|
||||||
DEVELOCITY_CACHE = credentials("${p['develocity.cache.credentials']}")
|
|
||||||
DEVELOCITY_ACCESS_KEY = credentials("${p['develocity.access-key']}")
|
|
||||||
}
|
|
||||||
|
|
||||||
steps {
|
|
||||||
script {
|
|
||||||
docker.image(p['docker.java.main.image']).inside(p['docker.java.inside.docker']) {
|
|
||||||
sh "PROFILE=none JENKINS_USER_NAME=${p['jenkins.user.name']} ci/verify.sh"
|
|
||||||
sh "JENKINS_USER_NAME=${p['jenkins.user.name']} ci/clean.sh"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
stage("Test other configurations") {
|
|
||||||
when {
|
|
||||||
beforeAgent(true)
|
|
||||||
allOf {
|
|
||||||
branch(pattern: "main|(\\d\\.\\d\\.x)", comparator: "REGEXP")
|
|
||||||
not { triggeredBy 'UpstreamCause' }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
parallel {
|
|
||||||
stage("test: baseline (next)") {
|
|
||||||
agent {
|
|
||||||
label 'data'
|
|
||||||
}
|
|
||||||
options { timeout(time: 30, unit: 'MINUTES') }
|
|
||||||
environment {
|
|
||||||
ARTIFACTORY = credentials("${p['artifactory.credentials']}")
|
|
||||||
DEVELOCITY_CACHE = credentials("${p['develocity.cache.credentials']}")
|
|
||||||
DEVELOCITY_ACCESS_KEY = credentials("${p['develocity.access-key']}")
|
|
||||||
}
|
|
||||||
steps {
|
|
||||||
script {
|
|
||||||
docker.image(p['docker.java.next.image']).inside(p['docker.java.inside.docker']) {
|
|
||||||
sh "PROFILE=none JENKINS_USER_NAME=${p['jenkins.user.name']} ci/verify.sh"
|
|
||||||
sh "JENKINS_USER_NAME=${p['jenkins.user.name']} ci/clean.sh"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
stage('Release to artifactory') {
|
|
||||||
when {
|
|
||||||
beforeAgent(true)
|
|
||||||
anyOf {
|
|
||||||
branch(pattern: "main|(\\d\\.\\d\\.x)", comparator: "REGEXP")
|
|
||||||
not { triggeredBy 'UpstreamCause' }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
agent {
|
|
||||||
label 'data'
|
|
||||||
}
|
|
||||||
options { timeout(time: 20, unit: 'MINUTES') }
|
|
||||||
environment {
|
|
||||||
ARTIFACTORY = credentials("${p['artifactory.credentials']}")
|
|
||||||
DEVELOCITY_CACHE = credentials("${p['develocity.cache.credentials']}")
|
|
||||||
DEVELOCITY_ACCESS_KEY = credentials("${p['develocity.access-key']}")
|
|
||||||
}
|
|
||||||
steps {
|
|
||||||
script {
|
|
||||||
docker.image(p['docker.java.main.image']).inside(p['docker.java.inside.basic']) {
|
|
||||||
sh 'MAVEN_OPTS="-Duser.name=' + "${p['jenkins.user.name']}" + ' -Duser.home=/tmp/jenkins-home" ' +
|
|
||||||
"DEVELOCITY_CACHE_USERNAME=${DEVELOCITY_CACHE_USR} " +
|
|
||||||
"DEVELOCITY_CACHE_PASSWORD=${DEVELOCITY_CACHE_PSW} " +
|
|
||||||
"GRADLE_ENTERPRISE_ACCESS_KEY=${DEVELOCITY_ACCESS_KEY} " +
|
|
||||||
"./mvnw -s settings.xml -Pci,artifactory -Dmaven.repo.local=/tmp/jenkins-home/.m2/spring-data-elasticsearch-non-root " +
|
|
||||||
"-Dartifactory.server=${p['artifactory.url']} " +
|
|
||||||
"-Dartifactory.username=${ARTIFACTORY_USR} " +
|
|
||||||
"-Dartifactory.password=${ARTIFACTORY_PSW} " +
|
|
||||||
"-Dartifactory.staging-repository=${p['artifactory.repository.snapshot']} " +
|
|
||||||
"-Dartifactory.build-name=spring-data-elasticsearch " +
|
|
||||||
"-Dartifactory.build-number=spring-data-elasticsearch-${BRANCH_NAME}-build-${BUILD_NUMBER} " +
|
|
||||||
"-Dmaven.test.skip=true clean deploy -U -B"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
post {
|
|
||||||
changed {
|
|
||||||
script {
|
|
||||||
emailext(
|
|
||||||
subject: "[${currentBuild.fullDisplayName}] ${currentBuild.currentResult}",
|
|
||||||
mimeType: 'text/html',
|
|
||||||
recipientProviders: [[$class: 'CulpritsRecipientProvider'], [$class: 'RequesterRecipientProvider']],
|
|
||||||
body: "<a href=\"${env.BUILD_URL}\">${currentBuild.fullDisplayName} is reported as ${currentBuild.currentResult}</a>")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
+3
-3
@@ -1,4 +1,4 @@
|
|||||||
= Spring Data for Elasticsearch image:https://jenkins.spring.io/buildStatus/icon?job=spring-data-elasticsearch%2Fmain&subject=Build[link=https://jenkins.spring.io/view/SpringData/job/spring-data-elasticsearch/] https://gitter.im/spring-projects/spring-data[image:https://badges.gitter.im/spring-projects/spring-data.svg[Gitter]] image:https://img.shields.io/badge/Revved%20up%20by-Develocity-06A0CE?logo=Gradle&labelColor=02303A["Revved up by Develocity", link="https://ge.spring.io/scans?search.rootProjectNames=Spring Data Elasticsearch"]
|
= Spring Data for Elasticsearch image:https://img.shields.io/badge/Revved%20up%20by-Develocity-06A0CE?logo=Gradle&labelColor=02303A["Revved up by Develocity", link="https://ge.spring.io/scans?search.rootProjectNames=Spring Data Elasticsearch"]
|
||||||
|
|
||||||
The primary goal of the https://projects.spring.io/spring-data[Spring Data] project is to make it easier to build Spring-powered applications that use new data access technologies such as non-relational databases, map-reduce frameworks, and cloud based data services.
|
The primary goal of the https://projects.spring.io/spring-data[Spring Data] project is to make it easier to build Spring-powered applications that use new data access technologies such as non-relational databases, map-reduce frameworks, and cloud based data services.
|
||||||
|
|
||||||
@@ -62,7 +62,7 @@ public class MyService {
|
|||||||
|
|
||||||
=== Using the RestClient
|
=== Using the RestClient
|
||||||
|
|
||||||
Please check the [official documentation](https://docs.spring.io/spring-data/elasticsearch/docs/current/reference/html/#elasticsearch.clients.configuration).
|
Please check the https://docs.spring.io/spring-data/elasticsearch/docs/current/reference/html/#elasticsearch.clients.configuration[official documentation].
|
||||||
|
|
||||||
=== Maven configuration
|
=== Maven configuration
|
||||||
|
|
||||||
@@ -168,7 +168,7 @@ Building the documentation builds also the project without running tests.
|
|||||||
$ ./mvnw clean install -Pantora
|
$ ./mvnw clean install -Pantora
|
||||||
----
|
----
|
||||||
|
|
||||||
The generated documentation is available from `target/antora/site/index.html`.
|
The generated documentation is available from `target/site/index.html`.
|
||||||
|
|
||||||
== Examples
|
== Examples
|
||||||
|
|
||||||
|
|||||||
+11
-5
@@ -1,9 +1,15 @@
|
|||||||
# Security Policy
|
= Security Policy
|
||||||
|
|
||||||
## Supported Versions
|
== Reporting a Vulnerability
|
||||||
|
|
||||||
Please see the https://spring.io/projects/spring-data-elasticsearch[Spring Data Elasticsearch] project page for supported versions.
|
Please, https://github.com/spring-projects/security-advisories/security/advisories/new[open a draft security advisory] if you need to disclose and discuss a security issue in private with the Spring Data team.
|
||||||
|
Note that we only accept reports against https://spring.io/projects/spring-data#support[supported versions].
|
||||||
|
|
||||||
## Reporting a Vulnerability
|
For more details, check out our https://spring.io/security-policy[security policy].
|
||||||
|
|
||||||
Please don't raise security vulnerabilities here. Head over to https://pivotal.io/security to learn how to disclose them responsibly.
|
== JAR signing
|
||||||
|
|
||||||
|
Spring Data JARs released on Maven Central are signed.
|
||||||
|
You'll find more information about the key here: https://spring.io/GPG-KEY-spring.txt
|
||||||
|
|
||||||
|
Versions released prior to 2023 may be signed with a different key.
|
||||||
|
|||||||
-13
@@ -1,13 +0,0 @@
|
|||||||
#!/bin/bash -x
|
|
||||||
|
|
||||||
set -euo pipefail
|
|
||||||
|
|
||||||
export DEVELOCITY_CACHE_USERNAME=${DEVELOCITY_CACHE_USR}
|
|
||||||
export DEVELOCITY_CACHE_PASSWORD=${DEVELOCITY_CACHE_PSW}
|
|
||||||
export JENKINS_USER=${JENKINS_USER_NAME}
|
|
||||||
|
|
||||||
# The environment variable to configure access key is still GRADLE_ENTERPRISE_ACCESS_KEY
|
|
||||||
export GRADLE_ENTERPRISE_ACCESS_KEY=${DEVELOCITY_ACCESS_KEY}
|
|
||||||
|
|
||||||
MAVEN_OPTS="-Duser.name=${JENKINS_USER} -Duser.home=/tmp/jenkins-home" \
|
|
||||||
./mvnw -s settings.xml clean -Dscan=false -Dmaven.repo.local=/tmp/jenkins-home/.m2/spring-data-elasticsearch
|
|
||||||
@@ -1,33 +0,0 @@
|
|||||||
# Java versions
|
|
||||||
java.main.tag=17.0.9_9-jdk-focal
|
|
||||||
java.next.tag=21.0.1_12-jdk-jammy
|
|
||||||
|
|
||||||
# Docker container images - standard
|
|
||||||
docker.java.main.image=harbor-repo.vmware.com/dockerhub-proxy-cache/library/eclipse-temurin:${java.main.tag}
|
|
||||||
docker.java.next.image=harbor-repo.vmware.com/dockerhub-proxy-cache/library/eclipse-temurin:${java.next.tag}
|
|
||||||
|
|
||||||
# Supported versions of MongoDB
|
|
||||||
docker.mongodb.4.4.version=4.4.25
|
|
||||||
docker.mongodb.5.0.version=5.0.21
|
|
||||||
docker.mongodb.6.0.version=6.0.10
|
|
||||||
docker.mongodb.7.0.version=7.0.2
|
|
||||||
|
|
||||||
# Supported versions of Redis
|
|
||||||
docker.redis.6.version=6.2.13
|
|
||||||
|
|
||||||
# Supported versions of Cassandra
|
|
||||||
docker.cassandra.3.version=3.11.16
|
|
||||||
|
|
||||||
# Docker environment settings
|
|
||||||
docker.java.inside.basic=-v $HOME:/tmp/jenkins-home
|
|
||||||
docker.java.inside.docker=-u root -v /var/run/docker.sock:/var/run/docker.sock -v /usr/bin/docker:/usr/bin/docker -v $HOME:/tmp/jenkins-home
|
|
||||||
|
|
||||||
# Credentials
|
|
||||||
docker.registry=
|
|
||||||
docker.credentials=hub.docker.com-springbuildmaster
|
|
||||||
artifactory.credentials=02bd1690-b54f-4c9f-819d-a77cb7a9822c
|
|
||||||
artifactory.url=https://repo.spring.io
|
|
||||||
artifactory.repository.snapshot=libs-snapshot-local
|
|
||||||
develocity.cache.credentials=gradle_enterprise_cache_user
|
|
||||||
develocity.access-key=gradle_enterprise_secret_access_key
|
|
||||||
jenkins.user.name=spring-builds+jenkins
|
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
#!/bin/bash -x
|
|
||||||
|
|
||||||
set -euo pipefail
|
|
||||||
|
|
||||||
mkdir -p /tmp/jenkins-home/.m2/spring-data-elasticsearch
|
|
||||||
chown -R 1001:1001 .
|
|
||||||
|
|
||||||
export DEVELOCITY_CACHE_USERNAME=${DEVELOCITY_CACHE_USR}
|
|
||||||
export DEVELOCITY_CACHE_PASSWORD=${DEVELOCITY_CACHE_PSW}
|
|
||||||
export JENKINS_USER=${JENKINS_USER_NAME}
|
|
||||||
|
|
||||||
# The environment variable to configure access key is still GRADLE_ENTERPRISE_ACCESS_KEY
|
|
||||||
export GRADLE_ENTERPRISE_ACCESS_KEY=${DEVELOCITY_ACCESS_KEY}
|
|
||||||
|
|
||||||
MAVEN_OPTS="-Duser.name=${JENKINS_USER} -Duser.home=/tmp/jenkins-home" \
|
|
||||||
./mvnw -s settings.xml \
|
|
||||||
-P${PROFILE} clean dependency:list verify -Dsort -U -B -Dmaven.repo.local=/tmp/jenkins-home/.m2/spring-data-elasticsearch
|
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
"dependencies": {
|
||||||
|
"antora": "3.2.0-alpha.6",
|
||||||
|
"@antora/atlas-extension": "1.0.0-alpha.2",
|
||||||
|
"@antora/collector-extension": "1.0.0-alpha.7",
|
||||||
|
"@asciidoctor/tabs": "1.0.0-beta.6",
|
||||||
|
"@springio/antora-extensions": "1.13.0",
|
||||||
|
"@springio/asciidoctor-extensions": "1.0.0-alpha.11"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,16 +1,16 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
|
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||||
|
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
<groupId>org.springframework.data</groupId>
|
<groupId>org.springframework.data</groupId>
|
||||||
<artifactId>spring-data-elasticsearch</artifactId>
|
<artifactId>spring-data-elasticsearch</artifactId>
|
||||||
<version>5.3.0</version>
|
<version>5.5.12</version>
|
||||||
|
|
||||||
<parent>
|
<parent>
|
||||||
<groupId>org.springframework.data.build</groupId>
|
<groupId>org.springframework.data.build</groupId>
|
||||||
<artifactId>spring-data-parent</artifactId>
|
<artifactId>spring-data-parent</artifactId>
|
||||||
<version>3.3.0</version>
|
<version>3.5.12</version>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<name>Spring Data Elasticsearch</name>
|
<name>Spring Data Elasticsearch</name>
|
||||||
@@ -18,17 +18,16 @@
|
|||||||
<url>https://github.com/spring-projects/spring-data-elasticsearch</url>
|
<url>https://github.com/spring-projects/spring-data-elasticsearch</url>
|
||||||
|
|
||||||
<properties>
|
<properties>
|
||||||
<springdata.commons>3.3.0</springdata.commons>
|
<springdata.commons>3.5.12</springdata.commons>
|
||||||
|
|
||||||
<!-- version of the ElasticsearchClient -->
|
<!-- version of the ElasticsearchClient -->
|
||||||
<elasticsearch-java>8.13.2</elasticsearch-java>
|
<elasticsearch-java>8.18.8</elasticsearch-java>
|
||||||
|
|
||||||
<blockhound-junit>1.0.8.RELEASE</blockhound-junit>
|
<hoverfly>0.19.0</hoverfly>
|
||||||
<hoverfly>0.14.4</hoverfly>
|
<log4j>2.23.1</log4j>
|
||||||
<log4j>2.18.0</log4j>
|
<jsonassert>1.5.3</jsonassert>
|
||||||
<jsonassert>1.5.1</jsonassert>
|
<testcontainers>1.20.0</testcontainers>
|
||||||
<testcontainers>1.18.0</testcontainers>
|
<wiremock>3.9.1</wiremock>
|
||||||
<wiremock>2.35.1</wiremock>
|
|
||||||
|
|
||||||
<java-module-name>spring.data.elasticsearch</java-module-name>
|
<java-module-name>spring.data.elasticsearch</java-module-name>
|
||||||
|
|
||||||
@@ -42,6 +41,15 @@
|
|||||||
</properties>
|
</properties>
|
||||||
|
|
||||||
<developers>
|
<developers>
|
||||||
|
<developer>
|
||||||
|
<id>sothawo</id>
|
||||||
|
<name>Peter-Josef Meisch</name>
|
||||||
|
<email>pj.meisch at sothawo.com</email>
|
||||||
|
<roles>
|
||||||
|
<role>Project Lead</role>
|
||||||
|
</roles>
|
||||||
|
<timezone>+1</timezone>
|
||||||
|
</developer>
|
||||||
<developer>
|
<developer>
|
||||||
<id>biomedcentral</id>
|
<id>biomedcentral</id>
|
||||||
<name>BioMed Central Development Team</name>
|
<name>BioMed Central Development Team</name>
|
||||||
@@ -74,15 +82,9 @@
|
|||||||
<scm>
|
<scm>
|
||||||
<url>https://github.com/spring-projects/spring-data-elasticsearch</url>
|
<url>https://github.com/spring-projects/spring-data-elasticsearch</url>
|
||||||
<connection>scm:git:git://github.com/spring-projects/spring-data-elasticsearch.git</connection>
|
<connection>scm:git:git://github.com/spring-projects/spring-data-elasticsearch.git</connection>
|
||||||
<developerConnection>scm:git:ssh://git@github.com/spring-projects/spring-data-elasticsearch.git
|
<developerConnection>scm:git:ssh://git@github.com/spring-projects/spring-data-elasticsearch.git</developerConnection>
|
||||||
</developerConnection>
|
|
||||||
</scm>
|
</scm>
|
||||||
|
|
||||||
<ciManagement>
|
|
||||||
<system>Bamboo</system>
|
|
||||||
<url>https://build.spring.io/browse/SPRINGDATAES</url>
|
|
||||||
</ciManagement>
|
|
||||||
|
|
||||||
<issueManagement>
|
<issueManagement>
|
||||||
<system>GitHub</system>
|
<system>GitHub</system>
|
||||||
<url>https://github.com/spring-projects/spring-data-elasticsearch/issues</url>
|
<url>https://github.com/spring-projects/spring-data-elasticsearch/issues</url>
|
||||||
@@ -132,9 +134,10 @@
|
|||||||
</exclusion>
|
</exclusion>
|
||||||
</exclusions>
|
</exclusions>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.elasticsearch.client</groupId>
|
<groupId>org.elasticsearch.client</groupId>
|
||||||
<artifactId>elasticsearch-rest-client</artifactId> <!-- is Apache 2-->
|
<artifactId>elasticsearch-rest-client</artifactId>
|
||||||
<version>${elasticsearch-java}</version>
|
<version>${elasticsearch-java}</version>
|
||||||
<exclusions>
|
<exclusions>
|
||||||
<exclusion>
|
<exclusion>
|
||||||
@@ -248,13 +251,6 @@
|
|||||||
<scope>test</scope>
|
<scope>test</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
|
||||||
<groupId>io.projectreactor.tools</groupId>
|
|
||||||
<artifactId>blockhound-junit-platform</artifactId>
|
|
||||||
<version>${blockhound-junit}</version>
|
|
||||||
<scope>test</scope>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.skyscreamer</groupId>
|
<groupId>org.skyscreamer</groupId>
|
||||||
<artifactId>jsonassert</artifactId>
|
<artifactId>jsonassert</artifactId>
|
||||||
@@ -263,8 +259,8 @@
|
|||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.github.tomakehurst</groupId>
|
<groupId>org.wiremock</groupId>
|
||||||
<artifactId>wiremock-jre8</artifactId>
|
<artifactId>wiremock</artifactId>
|
||||||
<version>${wiremock}</version>
|
<version>${wiremock}</version>
|
||||||
<scope>test</scope>
|
<scope>test</scope>
|
||||||
<exclusions>
|
<exclusions>
|
||||||
@@ -443,25 +439,6 @@
|
|||||||
</build>
|
</build>
|
||||||
</profile>
|
</profile>
|
||||||
|
|
||||||
<profile>
|
|
||||||
<id>jdk13+</id>
|
|
||||||
<!-- on jDK13+, Blockhound needs this JVM flag set -->
|
|
||||||
<activation>
|
|
||||||
<jdk>[13,)</jdk>
|
|
||||||
</activation>
|
|
||||||
<build>
|
|
||||||
<plugins>
|
|
||||||
<plugin>
|
|
||||||
<groupId>org.apache.maven.plugins</groupId>
|
|
||||||
<artifactId>maven-surefire-plugin</artifactId>
|
|
||||||
<configuration>
|
|
||||||
<argLine>-XX:+AllowRedefinitionToAddDeleteMethods</argLine>
|
|
||||||
</configuration>
|
|
||||||
</plugin>
|
|
||||||
</plugins>
|
|
||||||
</build>
|
|
||||||
</profile>
|
|
||||||
|
|
||||||
<profile>
|
<profile>
|
||||||
<id>antora-process-resources</id>
|
<id>antora-process-resources</id>
|
||||||
<build>
|
<build>
|
||||||
@@ -479,7 +456,7 @@
|
|||||||
<build>
|
<build>
|
||||||
<plugins>
|
<plugins>
|
||||||
<plugin>
|
<plugin>
|
||||||
<groupId>io.spring.maven.antora</groupId>
|
<groupId>org.antora</groupId>
|
||||||
<artifactId>antora-maven-plugin</artifactId>
|
<artifactId>antora-maven-plugin</artifactId>
|
||||||
</plugin>
|
</plugin>
|
||||||
</plugins>
|
</plugins>
|
||||||
|
|||||||
@@ -1,29 +0,0 @@
|
|||||||
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
|
|
||||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
||||||
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
|
|
||||||
https://maven.apache.org/xsd/settings-1.0.0.xsd">
|
|
||||||
|
|
||||||
<servers>
|
|
||||||
<server>
|
|
||||||
<id>spring-plugins-release</id>
|
|
||||||
<username>${env.ARTIFACTORY_USR}</username>
|
|
||||||
<password>${env.ARTIFACTORY_PSW}</password>
|
|
||||||
</server>
|
|
||||||
<server>
|
|
||||||
<id>spring-libs-snapshot</id>
|
|
||||||
<username>${env.ARTIFACTORY_USR}</username>
|
|
||||||
<password>${env.ARTIFACTORY_PSW}</password>
|
|
||||||
</server>
|
|
||||||
<server>
|
|
||||||
<id>spring-libs-milestone</id>
|
|
||||||
<username>${env.ARTIFACTORY_USR}</username>
|
|
||||||
<password>${env.ARTIFACTORY_PSW}</password>
|
|
||||||
</server>
|
|
||||||
<server>
|
|
||||||
<id>spring-libs-release</id>
|
|
||||||
<username>${env.ARTIFACTORY_USR}</username>
|
|
||||||
<password>${env.ARTIFACTORY_PSW}</password>
|
|
||||||
</server>
|
|
||||||
</servers>
|
|
||||||
|
|
||||||
</settings>
|
|
||||||
@@ -3,8 +3,7 @@
|
|||||||
# The purpose of this Antora playbook is to build the docs in the current branch.
|
# The purpose of this Antora playbook is to build the docs in the current branch.
|
||||||
antora:
|
antora:
|
||||||
extensions:
|
extensions:
|
||||||
- '@antora/collector-extension'
|
- require: '@springio/antora-extensions'
|
||||||
- require: '@springio/antora-extensions/root-component-extension'
|
|
||||||
root_component_name: 'data-elasticsearch'
|
root_component_name: 'data-elasticsearch'
|
||||||
site:
|
site:
|
||||||
title: Spring Data Elasticsearch
|
title: Spring Data Elasticsearch
|
||||||
@@ -18,17 +17,16 @@ content:
|
|||||||
- url: https://github.com/spring-projects/spring-data-commons
|
- url: https://github.com/spring-projects/spring-data-commons
|
||||||
# Refname matching:
|
# Refname matching:
|
||||||
# https://docs.antora.org/antora/latest/playbook/content-refname-matching/
|
# https://docs.antora.org/antora/latest/playbook/content-refname-matching/
|
||||||
branches: [ main, 3.2.x ]
|
branches: [ main, 3.4.x, 3.3.x ]
|
||||||
start_path: src/main/antora
|
start_path: src/main/antora
|
||||||
asciidoc:
|
asciidoc:
|
||||||
attributes:
|
attributes:
|
||||||
page-pagination: ''
|
|
||||||
hide-uri-scheme: '@'
|
hide-uri-scheme: '@'
|
||||||
tabs-sync-option: '@'
|
tabs-sync-option: '@'
|
||||||
chomp: 'all'
|
|
||||||
extensions:
|
extensions:
|
||||||
- '@asciidoctor/tabs'
|
- '@asciidoctor/tabs'
|
||||||
- '@springio/asciidoctor-extensions'
|
- '@springio/asciidoctor-extensions'
|
||||||
|
- '@springio/asciidoctor-extensions/javadoc-extension'
|
||||||
sourcemap: true
|
sourcemap: true
|
||||||
urls:
|
urls:
|
||||||
latest_version_segment: ''
|
latest_version_segment: ''
|
||||||
@@ -38,5 +36,5 @@ runtime:
|
|||||||
format: pretty
|
format: pretty
|
||||||
ui:
|
ui:
|
||||||
bundle:
|
bundle:
|
||||||
url: https://github.com/spring-io/antora-ui-spring/releases/download/v0.3.5/ui-bundle.zip
|
url: https://github.com/spring-io/antora-ui-spring/releases/download/v0.4.16/ui-bundle.zip
|
||||||
snapshot: true
|
snapshot: true
|
||||||
|
|||||||
@@ -6,7 +6,8 @@ nav:
|
|||||||
ext:
|
ext:
|
||||||
collector:
|
collector:
|
||||||
- run:
|
- run:
|
||||||
command: ./mvnw validate process-resources -am -Pantora-process-resources
|
command: ./mvnw -B validate process-resources dependency:unpack -am -Pantora-process-resources
|
||||||
local: true
|
local: true
|
||||||
scan:
|
scan:
|
||||||
dir: target/classes/
|
- dir: target/classes/
|
||||||
|
- dir: target/antora/
|
||||||
|
|||||||
@@ -9,6 +9,9 @@
|
|||||||
*** xref:migration-guides/migration-guide-4.4-5.0.adoc[]
|
*** xref:migration-guides/migration-guide-4.4-5.0.adoc[]
|
||||||
*** xref:migration-guides/migration-guide-5.0-5.1.adoc[]
|
*** xref:migration-guides/migration-guide-5.0-5.1.adoc[]
|
||||||
*** xref:migration-guides/migration-guide-5.1-5.2.adoc[]
|
*** xref:migration-guides/migration-guide-5.1-5.2.adoc[]
|
||||||
|
*** xref:migration-guides/migration-guide-5.2-5.3.adoc[]
|
||||||
|
*** xref:migration-guides/migration-guide-5.3-5.4.adoc[]
|
||||||
|
*** xref:migration-guides/migration-guide-5.4-5.5.adoc[]
|
||||||
|
|
||||||
|
|
||||||
* xref:elasticsearch.adoc[]
|
* xref:elasticsearch.adoc[]
|
||||||
@@ -39,4 +42,5 @@
|
|||||||
** xref:repositories/query-keywords-reference.adoc[]
|
** xref:repositories/query-keywords-reference.adoc[]
|
||||||
** xref:repositories/query-return-types-reference.adoc[]
|
** xref:repositories/query-return-types-reference.adoc[]
|
||||||
|
|
||||||
* https://github.com/spring-projects/spring-data-commons/wiki[Wiki]
|
* xref:attachment$api/java/index.html[Javadoc,role=link-external,window=_blank]
|
||||||
|
* https://github.com/spring-projects/spring-data-commons/wiki[Wiki,role=link-external,window=_blank]
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ public class MyClientConfig extends ElasticsearchConfiguration {
|
|||||||
<.> for a detailed description of the builder methods see xref:elasticsearch/clients.adoc#elasticsearch.clients.configuration[Client Configuration]
|
<.> for a detailed description of the builder methods see xref:elasticsearch/clients.adoc#elasticsearch.clients.configuration[Client Configuration]
|
||||||
====
|
====
|
||||||
|
|
||||||
The `ElasticsearchConfiguration` class allows further configuration by overriding for example the `jsonpMapper()` or `transportOptions()` methods.
|
The javadoc:org.springframework.data.elasticsearch.client.elc.ElasticsearchConfiguration[]] class allows further configuration by overriding for example the `jsonpMapper()` or `transportOptions()` methods.
|
||||||
|
|
||||||
|
|
||||||
The following beans can then be injected in other Spring components:
|
The following beans can then be injected in other Spring components:
|
||||||
@@ -52,13 +52,13 @@ RestClient restClient; <.>
|
|||||||
JsonpMapper jsonpMapper; <.>
|
JsonpMapper jsonpMapper; <.>
|
||||||
----
|
----
|
||||||
|
|
||||||
<.> an implementation of `ElasticsearchOperations`
|
<.> an implementation of javadoc:org.springframework.data.elasticsearch.core.ElasticsearchOperations[]
|
||||||
<.> the `co.elastic.clients.elasticsearch.ElasticsearchClient` that is used.
|
<.> the `co.elastic.clients.elasticsearch.ElasticsearchClient` that is used.
|
||||||
<.> the low level `RestClient` from the Elasticsearch libraries
|
<.> the low level `RestClient` from the Elasticsearch libraries
|
||||||
<.> the `JsonpMapper` user by the Elasticsearch `Transport`
|
<.> the `JsonpMapper` user by the Elasticsearch `Transport`
|
||||||
====
|
====
|
||||||
|
|
||||||
Basically one should just use the `ElasticsearchOperations` to interact with the Elasticsearch cluster.
|
Basically one should just use the javadoc:org.springframework.data.elasticsearch.core.ElasticsearchOperations[] to interact with the Elasticsearch cluster.
|
||||||
When using repositories, this instance is used under the hood as well.
|
When using repositories, this instance is used under the hood as well.
|
||||||
|
|
||||||
[[elasticsearch.clients.reactiverestclient]]
|
[[elasticsearch.clients.reactiverestclient]]
|
||||||
@@ -86,7 +86,7 @@ public class MyClientConfig extends ReactiveElasticsearchConfiguration {
|
|||||||
<.> for a detailed description of the builder methods see xref:elasticsearch/clients.adoc#elasticsearch.clients.configuration[Client Configuration]
|
<.> for a detailed description of the builder methods see xref:elasticsearch/clients.adoc#elasticsearch.clients.configuration[Client Configuration]
|
||||||
====
|
====
|
||||||
|
|
||||||
The `ReactiveElasticsearchConfiguration` class allows further configuration by overriding for example the `jsonpMapper()` or `transportOptions()` methods.
|
The javadoc:org.springframework.data.elasticsearch.client.elc.ReactiveElasticsearchConfiguration[] class allows further configuration by overriding for example the `jsonpMapper()` or `transportOptions()` methods.
|
||||||
|
|
||||||
The following beans can then be injected in other Spring components:
|
The following beans can then be injected in other Spring components:
|
||||||
|
|
||||||
@@ -108,20 +108,20 @@ JsonpMapper jsonpMapper; <.>
|
|||||||
|
|
||||||
the following can be injected:
|
the following can be injected:
|
||||||
|
|
||||||
<.> an implementation of `ReactiveElasticsearchOperations`
|
<.> an implementation of javadoc:org.springframework.data.elasticsearch.core.ReactiveElasticsearchOperations[]
|
||||||
<.> the `org.springframework.data.elasticsearch.client.elc.ReactiveElasticsearchClient` that is used.
|
<.> the `org.springframework.data.elasticsearch.client.elc.ReactiveElasticsearchClient` that is used.
|
||||||
This is a reactive implementation based on the Elasticsearch client implementation.
|
This is a reactive implementation based on the Elasticsearch client implementation.
|
||||||
<.> the low level `RestClient` from the Elasticsearch libraries
|
<.> the low level `RestClient` from the Elasticsearch libraries
|
||||||
<.> the `JsonpMapper` user by the Elasticsearch `Transport`
|
<.> the `JsonpMapper` user by the Elasticsearch `Transport`
|
||||||
====
|
====
|
||||||
|
|
||||||
Basically one should just use the `ReactiveElasticsearchOperations` to interact with the Elasticsearch cluster.
|
Basically one should just use the javadoc:org.springframework.data.elasticsearch.core.ReactiveElasticsearchOperations[] to interact with the Elasticsearch cluster.
|
||||||
When using repositories, this instance is used under the hood as well.
|
When using repositories, this instance is used under the hood as well.
|
||||||
|
|
||||||
[[elasticsearch.clients.configuration]]
|
[[elasticsearch.clients.configuration]]
|
||||||
== Client Configuration
|
== Client Configuration
|
||||||
|
|
||||||
Client behaviour can be changed via the `ClientConfiguration` that allows to set options for SSL, connect and socket timeouts, headers and other parameters.
|
Client behaviour can be changed via the javadoc:org.springframework.data.elasticsearch.client.ClientConfiguration[] that allows to set options for SSL, connect and socket timeouts, headers and other parameters.
|
||||||
|
|
||||||
.Client Configuration
|
.Client Configuration
|
||||||
====
|
====
|
||||||
@@ -178,7 +178,7 @@ If this is used in the reactive setup, the supplier function *must not* block!
|
|||||||
[[elasticsearch.clients.configuration.callbacks]]
|
[[elasticsearch.clients.configuration.callbacks]]
|
||||||
=== Client configuration callbacks
|
=== Client configuration callbacks
|
||||||
|
|
||||||
The `ClientConfiguration` class offers the most common parameters to configure the client.
|
The javadoc:org.springframework.data.elasticsearch.client.ClientConfiguration[] class offers the most common parameters to configure the client.
|
||||||
In the case this is not enough, the user can add callback functions by using the `withClientConfigurer(ClientConfigurationCallback<?>)` method.
|
In the case this is not enough, the user can add callback functions by using the `withClientConfigurer(ClientConfigurationCallback<?>)` method.
|
||||||
|
|
||||||
The following callbacks are provided:
|
The following callbacks are provided:
|
||||||
|
|||||||
@@ -1,6 +1,21 @@
|
|||||||
[[new-features]]
|
[[new-features]]
|
||||||
= What's new
|
= What's new
|
||||||
|
|
||||||
|
[[new-features.5-5-0]]
|
||||||
|
== New in Spring Data Elasticsearch 5.5
|
||||||
|
|
||||||
|
* Upgrade to Elasticsearch 8.18.1.
|
||||||
|
* Add support for the `@SearchTemplateQuery` annotation on repository methods.
|
||||||
|
* Scripted field properties of type collection can be populated from scripts returning arrays.
|
||||||
|
|
||||||
|
[[new-features.5-4-0]]
|
||||||
|
== New in Spring Data Elasticsearch 5.4
|
||||||
|
|
||||||
|
* Upgrade to Elasticsearch 8.15.3.
|
||||||
|
* Allow to customize the mapped type name for `@InnerField` and `@Field` annotations.
|
||||||
|
* Support for Elasticsearch SQL.
|
||||||
|
* Add support for retrieving request executionDuration.
|
||||||
|
|
||||||
[[new-features.5-3-0]]
|
[[new-features.5-3-0]]
|
||||||
== New in Spring Data Elasticsearch 5.3
|
== New in Spring Data Elasticsearch 5.3
|
||||||
|
|
||||||
|
|||||||
@@ -365,6 +365,8 @@ operations.putScript( <.>
|
|||||||
|
|
||||||
To use a search template in a search query, Spring Data Elasticsearch provides the `SearchTemplateQuery`, an implementation of the `org.springframework.data.elasticsearch.core.query.Query` interface.
|
To use a search template in a search query, Spring Data Elasticsearch provides the `SearchTemplateQuery`, an implementation of the `org.springframework.data.elasticsearch.core.query.Query` interface.
|
||||||
|
|
||||||
|
NOTE: Although `SearchTemplateQuery` is an implementation of the `Query` interface, not all of the functionality provided by the base class is available for a `SearchTemplateQuery` like setting a `Pageable` or a `Sort`. Values for this functionality must be added to the stored script like shown in the following example for paging parameters. If these values are set on the `Query` object, they will be ignored.
|
||||||
|
|
||||||
In the following code, we will add a call using a search template query to a custom repository implementation (see
|
In the following code, we will add a call using a search template query to a custom repository implementation (see
|
||||||
xref:repositories/custom-implementations.adoc[]) as an example how this can be integrated into a repository call.
|
xref:repositories/custom-implementations.adoc[]) as an example how this can be integrated into a repository call.
|
||||||
|
|
||||||
@@ -449,4 +451,3 @@ var query = Query.findAll().addSort(Sort.by(order));
|
|||||||
About the filter query: It is not possible to use a `CriteriaQuery` here, as this query would be converted into a Elasticsearch nested query which does not work in the filter context. So only `StringQuery` or `NativeQuery` can be used here. When using one of these, like the term query above, the Elasticsearch field names must be used, so take care, when these are redefined with the `@Field(name="...")` definition.
|
About the filter query: It is not possible to use a `CriteriaQuery` here, as this query would be converted into a Elasticsearch nested query which does not work in the filter context. So only `StringQuery` or `NativeQuery` can be used here. When using one of these, like the term query above, the Elasticsearch field names must be used, so take care, when these are redefined with the `@Field(name="...")` definition.
|
||||||
|
|
||||||
For the definition of the order path and the nested paths, the Java entity property names should be used.
|
For the definition of the order path and the nested paths, the Java entity property names should be used.
|
||||||
|
|
||||||
|
|||||||
+38
-8
@@ -10,7 +10,9 @@ The Elasticsearch module supports all basic query building feature as string que
|
|||||||
=== Declared queries
|
=== Declared queries
|
||||||
|
|
||||||
Deriving the query from the method name is not always sufficient and/or may result in unreadable method names.
|
Deriving the query from the method name is not always sufficient and/or may result in unreadable method names.
|
||||||
In this case one might make use of the `@Query` annotation (see xref:elasticsearch/repositories/elasticsearch-repository-queries.adoc#elasticsearch.query-methods.at-query[Using @Query Annotation] ).
|
In this case one might make use of the `@Query` annotation (see xref:elasticsearch/repositories/elasticsearch-repository-queries.adoc#elasticsearch.query-methods.at-query[Using the @Query Annotation] ).
|
||||||
|
|
||||||
|
Another possibility is the use of a search-template, (see xref:elasticsearch/repositories/elasticsearch-repository-queries.adoc#elasticsearch.query-methods.at-searchtemplate-query[Using the @SearchTemplateQuery Annotation] ).
|
||||||
|
|
||||||
[[elasticsearch.query-methods.criterions]]
|
[[elasticsearch.query-methods.criterions]]
|
||||||
== Query creation
|
== Query creation
|
||||||
@@ -312,11 +314,13 @@ Repository methods can be defined to have the following return types for returni
|
|||||||
* `SearchPage<T>`
|
* `SearchPage<T>`
|
||||||
|
|
||||||
[[elasticsearch.query-methods.at-query]]
|
[[elasticsearch.query-methods.at-query]]
|
||||||
== Using @Query Annotation
|
== Using the @Query Annotation
|
||||||
|
|
||||||
.Declare query on the method using the `@Query` annotation.
|
.Declare query on the method using the `@Query` annotation.
|
||||||
====
|
====
|
||||||
The arguments passed to the method can be inserted into placeholders in the query string. The placeholders are of the form `?0`, `?1`, `?2` etc. for the first, second, third parameter and so on.
|
The arguments passed to the method can be inserted into placeholders in the query string.
|
||||||
|
The placeholders are of the form `?0`, `?1`, `?2` etc. for the first, second, third parameter and so on.
|
||||||
|
|
||||||
[source,java]
|
[source,java]
|
||||||
----
|
----
|
||||||
interface BookRepository extends ElasticsearchRepository<Book, String> {
|
interface BookRepository extends ElasticsearchRepository<Book, String> {
|
||||||
@@ -341,15 +345,20 @@ It will be sent to Easticsearch as value of the query element; if for example th
|
|||||||
}
|
}
|
||||||
----
|
----
|
||||||
====
|
====
|
||||||
|
|
||||||
.`@Query` annotation on a method taking a Collection argument
|
.`@Query` annotation on a method taking a Collection argument
|
||||||
====
|
====
|
||||||
A repository method such as
|
A repository method such as
|
||||||
|
|
||||||
[source,java]
|
[source,java]
|
||||||
----
|
----
|
||||||
@Query("{\"ids\": {\"values\": ?0 }}")
|
@Query("{\"ids\": {\"values\": ?0 }}")
|
||||||
List<SampleEntity> getByIds(Collection<String> ids);
|
List<SampleEntity> getByIds(Collection<String> ids);
|
||||||
----
|
----
|
||||||
would make an https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-ids-query.html[IDs query] to return all the matching documents. So calling the method with a `List` of `["id1", "id2", "id3"]` would produce the query body
|
|
||||||
|
would make an https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-ids-query.html[IDs query] to return all the matching documents.
|
||||||
|
So calling the method with a `List` of `["id1", "id2", "id3"]` would produce the query body
|
||||||
|
|
||||||
[source,json]
|
[source,json]
|
||||||
----
|
----
|
||||||
{
|
{
|
||||||
@@ -367,8 +376,7 @@ would make an https://www.elastic.co/guide/en/elasticsearch/reference/current/qu
|
|||||||
|
|
||||||
.Declare query on the method using the `@Query` annotation with SpEL expression.
|
.Declare query on the method using the `@Query` annotation with SpEL expression.
|
||||||
====
|
====
|
||||||
https://docs.spring.io/spring-framework/reference/core/expressions.html[SpEL expression] is also supported when defining query in `@Query`.
|
{spring-framework-docs}/core/expressions.html[SpEL expression] is also supported when defining query in `@Query`.
|
||||||
|
|
||||||
|
|
||||||
[source,java]
|
[source,java]
|
||||||
----
|
----
|
||||||
@@ -411,6 +419,7 @@ If for example the function is called with the parameter _John_, it would produc
|
|||||||
.accessing parameter property.
|
.accessing parameter property.
|
||||||
====
|
====
|
||||||
Supposing that we have the following class as query parameter type:
|
Supposing that we have the following class as query parameter type:
|
||||||
|
|
||||||
[source,java]
|
[source,java]
|
||||||
----
|
----
|
||||||
public record QueryParameter(String value) {
|
public record QueryParameter(String value) {
|
||||||
@@ -444,7 +453,9 @@ We can pass `new QueryParameter("John")` as the parameter now, and it will produ
|
|||||||
|
|
||||||
.accessing bean property.
|
.accessing bean property.
|
||||||
====
|
====
|
||||||
https://docs.spring.io/spring-framework/reference/core/expressions/language-ref/bean-references.html[Bean property] is also supported to access. Given that there is a bean named `queryParameter` of type `QueryParameter`, we can access the bean with symbol `@` rather than `#`, and there is no need to declare a parameter of type `QueryParameter` in the query method:
|
{spring-framework-docs}/core/expressions/language-ref/bean-references.html[Bean property] is also supported to access.
|
||||||
|
Given that there is a bean named `queryParameter` of type `QueryParameter`, we can access the bean with symbol `@` rather than `#`, and there is no need to declare a parameter of type `QueryParameter` in the query method:
|
||||||
|
|
||||||
[source,java]
|
[source,java]
|
||||||
----
|
----
|
||||||
interface BookRepository extends ElasticsearchRepository<Book, String> {
|
interface BookRepository extends ElasticsearchRepository<Book, String> {
|
||||||
@@ -493,6 +504,7 @@ interface BookRepository extends ElasticsearchRepository<Book, String> {
|
|||||||
NOTE: collection values should not be quoted when declaring the elasticsearch json query.
|
NOTE: collection values should not be quoted when declaring the elasticsearch json query.
|
||||||
|
|
||||||
A collection of `names` like `List.of("name1", "name2")` will produce the following terms query:
|
A collection of `names` like `List.of("name1", "name2")` will produce the following terms query:
|
||||||
|
|
||||||
[source,json]
|
[source,json]
|
||||||
----
|
----
|
||||||
{
|
{
|
||||||
@@ -511,7 +523,7 @@ A collection of `names` like `List.of("name1", "name2")` will produce the follow
|
|||||||
|
|
||||||
.access property in the `Collection` param.
|
.access property in the `Collection` param.
|
||||||
====
|
====
|
||||||
https://docs.spring.io/spring-framework/reference/core/expressions/language-ref/collection-projection.html[SpEL Collection Projection] is convenient to use when values in the `Collection` parameter is not plain `String`:
|
{spring-framework-docs}/core/expressions/language-ref/collection-projection.html[SpEL Collection Projection] is convenient to use when values in the `Collection` parameter is not plain `String`:
|
||||||
|
|
||||||
[source,java]
|
[source,java]
|
||||||
----
|
----
|
||||||
@@ -532,6 +544,7 @@ interface BookRepository extends ElasticsearchRepository<Book, String> {
|
|||||||
Page<Book> findByName(Collection<QueryParameter> parameters, Pageable pageable);
|
Page<Book> findByName(Collection<QueryParameter> parameters, Pageable pageable);
|
||||||
}
|
}
|
||||||
----
|
----
|
||||||
|
|
||||||
This will extract all the `value` property values as a new `Collection` from `QueryParameter` collection, thus takes the same effect as above.
|
This will extract all the `value` property values as a new `Collection` from `QueryParameter` collection, thus takes the same effect as above.
|
||||||
====
|
====
|
||||||
|
|
||||||
@@ -560,3 +573,20 @@ interface BookRepository extends ElasticsearchRepository<Book, String> {
|
|||||||
----
|
----
|
||||||
|
|
||||||
====
|
====
|
||||||
|
|
||||||
|
[[elasticsearch.query-methods.at-searchtemplate-query]]
|
||||||
|
== Using the @SearchTemplateQuery Annotation
|
||||||
|
|
||||||
|
When using Elasticsearch search templates - (see xref:elasticsearch/misc.adoc#elasticsearch.misc.searchtemplates [Search Template support]) it is possible to specify that a repository method should use a template by adding the `@SearchTemplateQuery` annotation to that method.
|
||||||
|
|
||||||
|
Let's assume that there is a search template stored with the name "book-by-title" and this template need a parameter named "title", then a repository method using that search template can be defined like this:
|
||||||
|
|
||||||
|
[source,java]
|
||||||
|
----
|
||||||
|
interface BookRepository extends ElasticsearchRepository<Book, String> {
|
||||||
|
@SearchTemplateQuery(id = "book-by-title")
|
||||||
|
SearchHits<Book> findByTitle(String title);
|
||||||
|
}
|
||||||
|
----
|
||||||
|
|
||||||
|
The parameters of the repository method are sent to the seacrh template as key/value pairs where the key is the parameter name and the value is taken from the actual value when the method is invoked.
|
||||||
|
|||||||
@@ -3,10 +3,10 @@
|
|||||||
|
|
||||||
Spring Data Elasticsearch uses several interfaces to define the operations that can be called against an Elasticsearch index (for a description of the reactive interfaces see xref:elasticsearch/reactive-template.adoc[]).
|
Spring Data Elasticsearch uses several interfaces to define the operations that can be called against an Elasticsearch index (for a description of the reactive interfaces see xref:elasticsearch/reactive-template.adoc[]).
|
||||||
|
|
||||||
* `IndexOperations` defines actions on index level like creating or deleting an index.
|
* javadoc:org.springframework.data.elasticsearch.core.IndexOperations[] defines actions on index level like creating or deleting an index.
|
||||||
* `DocumentOperations` defines actions to store, update and retrieve entities based on their id.
|
* javadoc:org.springframework.data.elasticsearch.core.DocumentOperations[] defines actions to store, update and retrieve entities based on their id.
|
||||||
* `SearchOperations` define the actions to search for multiple entities using queries
|
* javadoc:org.springframework.data.elasticsearch.core.SearchOperations[] define the actions to search for multiple entities using queries
|
||||||
* `ElasticsearchOperations` combines the `DocumentOperations` and `SearchOperations` interfaces.
|
* javadoc:org.springframework.data.elasticsearch.core.ElasticsearchOperations[] combines the `DocumentOperations` and `SearchOperations` interfaces.
|
||||||
|
|
||||||
These interfaces correspond to the structuring of the https://www.elastic.co/guide/en/elasticsearch/reference/current/rest-apis.html[Elasticsearch API].
|
These interfaces correspond to the structuring of the https://www.elastic.co/guide/en/elasticsearch/reference/current/rest-apis.html[Elasticsearch API].
|
||||||
|
|
||||||
@@ -81,7 +81,7 @@ When a document is retrieved with the methods of the `DocumentOperations` inter
|
|||||||
When searching with the methods of the `SearchOperations` interface, additional information is available for each entity, for example the _score_ or the _sortValues_ of the found entity.
|
When searching with the methods of the `SearchOperations` interface, additional information is available for each entity, for example the _score_ or the _sortValues_ of the found entity.
|
||||||
|
|
||||||
In order to return this information, each entity is wrapped in a `SearchHit` object that contains this entity-specific additional information.
|
In order to return this information, each entity is wrapped in a `SearchHit` object that contains this entity-specific additional information.
|
||||||
These `SearchHit` objects themselves are returned within a `SearchHits` object which additionally contains informations about the whole search like the _maxScore_ or requested aggregations.
|
These `SearchHit` objects themselves are returned within a `SearchHits` object which additionally contains informations about the whole search like the _maxScore_ or requested aggregations or the execution duration it took to complete the request.
|
||||||
The following classes and interfaces are now available:
|
The following classes and interfaces are now available:
|
||||||
|
|
||||||
.SearchHit<T>
|
.SearchHit<T>
|
||||||
|
|||||||
@@ -6,10 +6,12 @@ The following table shows the Elasticsearch and Spring versions that are used by
|
|||||||
[cols="^,^,^,^",options="header"]
|
[cols="^,^,^,^",options="header"]
|
||||||
|===
|
|===
|
||||||
| Spring Data Release Train | Spring Data Elasticsearch | Elasticsearch | Spring Framework
|
| Spring Data Release Train | Spring Data Elasticsearch | Elasticsearch | Spring Framework
|
||||||
| 2024.0 (?) | 5.3.x | 8.13.2 | ?
|
| 2025.0 | 5.5.x | 8.18.8 | 6.2.x
|
||||||
| 2023.1 (Vaughan) | 5.2.x | 8.11.1 | 6.1.x
|
| 2024.1 | 5.4.x | 8.15.5 | 6.1.x
|
||||||
| 2023.0 (Ullmann) | 5.1.x | 8.7.1 | 6.0.x
|
| 2024.0 | 5.3.xfootnote:oom[Out of maintenance] | 8.13.4 | 6.1.x
|
||||||
| 2022.0 (Turing) | 5.0.xfootnote:oom[Out of maintenance] | 8.5.3 | 6.0.x
|
| 2023.1 (Vaughan) | 5.2.xfootnote:oom[] | 8.11.1 | 6.1.x
|
||||||
|
| 2023.0 (Ullmann) | 5.1.xfootnote:oom[] | 8.7.1 | 6.0.x
|
||||||
|
| 2022.0 (Turing) | 5.0.xfootnote:oom[] | 8.5.3 | 6.0.x
|
||||||
| 2021.2 (Raj) | 4.4.xfootnote:oom[] | 7.17.3 | 5.3.x
|
| 2021.2 (Raj) | 4.4.xfootnote:oom[] | 7.17.3 | 5.3.x
|
||||||
| 2021.1 (Q) | 4.3.xfootnote:oom[] | 7.15.2 | 5.3.x
|
| 2021.1 (Q) | 4.3.xfootnote:oom[] | 7.15.2 | 5.3.x
|
||||||
| 2021.0 (Pascal) | 4.2.xfootnote:oom[] | 7.12.0 | 5.3.x
|
| 2021.0 (Pascal) | 4.2.xfootnote:oom[] | 7.12.0 | 5.3.x
|
||||||
|
|||||||
@@ -6,10 +6,16 @@ This section describes breaking changes from version 5.2.x to 5.3.x and how remo
|
|||||||
[[elasticsearch-migration-guide-5.2-5.3.breaking-changes]]
|
[[elasticsearch-migration-guide-5.2-5.3.breaking-changes]]
|
||||||
== Breaking Changes
|
== Breaking Changes
|
||||||
|
|
||||||
|
During the parameter replacement in `@Query` annotated repository methods previous versions wrote the String `"null"` into the query that was sent to Elasticsearch when the actual parameter value was `null`.
|
||||||
|
As Elasticsearch does not store `null` values, this behaviour could lead to problems, for example whent the fields to be searched contains the string `"null"`.
|
||||||
|
In Version 5.3 a `null` value in a parameter will cause a `ConversionException` to be thrown.
|
||||||
|
If you are using `"null"` as the
|
||||||
|
`null_value` defined in a field mapping, then pass that string into the query instead of a Java `null`.
|
||||||
|
|
||||||
[[elasticsearch-migration-guide-5.2-5.3.deprecations]]
|
[[elasticsearch-migration-guide-5.2-5.3.deprecations]]
|
||||||
== Deprecations
|
== Deprecations
|
||||||
|
|
||||||
=== Removals
|
=== Removals
|
||||||
|
|
||||||
The deprecated classes `org.springframework.data.elasticsearch.ELCQueries`
|
The deprecated classes `org.springframework.data.elasticsearch.ELCQueries`
|
||||||
and `org.springframework.data.elasticsearch.client.elc.QueryBuilders` have been removed, use `org.springframework.data.elasticsearch.client.elc.Queries` instead.
|
and `org.springframework.data.elasticsearch.client.elc.QueryBuilders` have been removed, use `org.springframework.data.elasticsearch.client.elc.Queries` instead.
|
||||||
|
|||||||
@@ -0,0 +1,23 @@
|
|||||||
|
[[elasticsearch-migration-guide-5.3-5.4]]
|
||||||
|
= Upgrading from 5.3.x to 5.4.x
|
||||||
|
|
||||||
|
This section describes breaking changes from version 5.3.x to 5.4.x and how removed features can be replaced by new introduced features.
|
||||||
|
|
||||||
|
[[elasticsearch-migration-guide-5.3-5.4.breaking-changes]]
|
||||||
|
== Breaking Changes
|
||||||
|
|
||||||
|
[[elasticsearch-migration-guide-5.3-5.4.breaking-changes.knn-search]]
|
||||||
|
=== knn search
|
||||||
|
The `withKnnQuery` method in `NativeQueryBuilder` has been replaced with `withKnnSearches` to build a `NativeQuery` with knn search.
|
||||||
|
|
||||||
|
`KnnQuery` and `KnnSearch` are two different classes in elasticsearch java client and are used for different queries, with different parameters supported:
|
||||||
|
|
||||||
|
- `KnnSearch`: is https://www.elastic.co/guide/en/elasticsearch/reference/8.13/search-search.html#search-api-knn[the top level `knn` query] in the elasticsearch request;
|
||||||
|
- `KnnQuery`: is https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-knn-query.html[the `knn` query inside `query` clause];
|
||||||
|
|
||||||
|
If `KnnQuery` is still preferable, please be sure to construct it inside `query` clause manually, by means of `withQuery(co.elastic.clients.elasticsearch._types.query_dsl.Query query)` clause in `NativeQueryBuilder`.
|
||||||
|
|
||||||
|
[[elasticsearch-migration-guide-5.3-5.4.deprecations]]
|
||||||
|
== Deprecations
|
||||||
|
|
||||||
|
=== Removals
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
[[elasticsearch-migration-guide-5.4-5.5]]
|
||||||
|
= Upgrading from 5.4.x to 5.5.x
|
||||||
|
|
||||||
|
This section describes breaking changes from version 5.4.x to 5.5.x and how removed features can be replaced by new introduced features.
|
||||||
|
|
||||||
|
[[elasticsearch-migration-guide-5.4-5.5.breaking-changes]]
|
||||||
|
== Breaking Changes
|
||||||
|
|
||||||
|
[[elasticsearch-migration-guide-5.4-5.5.deprecations]]
|
||||||
|
== Deprecations
|
||||||
|
|
||||||
|
Some classes that probably are not used by a library user have been renamed, the classes with the old names are still there, but are deprecated:
|
||||||
|
|
||||||
|
|===
|
||||||
|
|old name|new name
|
||||||
|
|
||||||
|
|ElasticsearchPartQuery|RepositoryPartQuery
|
||||||
|
|ElasticsearchStringQuery|RepositoryStringQuery
|
||||||
|
|ReactiveElasticsearchStringQuery|ReactiveRepositoryStringQuery
|
||||||
|
|===
|
||||||
|
|
||||||
|
=== Removals
|
||||||
|
|
||||||
|
The following methods that had been deprecated since release 5.3 have been removed:
|
||||||
|
```
|
||||||
|
DocumentOperations.delete(Query, Class<?>)
|
||||||
|
DocumentOperations.delete(Query, Class<?>, IndexCoordinates)
|
||||||
|
ReactiveDocumentOperations.delete(Query, Class<?>)
|
||||||
|
ReactiveDocumentOperations.delete(Query, Class<?>, IndexCoordinates)
|
||||||
|
```
|
||||||
@@ -3,19 +3,20 @@ prerelease: ${antora-component.prerelease}
|
|||||||
|
|
||||||
asciidoc:
|
asciidoc:
|
||||||
attributes:
|
attributes:
|
||||||
copyright-year: ${current.year}
|
|
||||||
version: ${project.version}
|
|
||||||
springversionshort: ${spring.short}
|
|
||||||
springversion: ${spring}
|
|
||||||
attribute-missing: 'warn'
|
attribute-missing: 'warn'
|
||||||
commons: ${springdata.commons.docs}
|
chomp: 'all'
|
||||||
|
version: '${project.version}'
|
||||||
|
copyright-year: '${current.year}'
|
||||||
|
springversionshort: '${spring.short}'
|
||||||
|
springversion: '${spring}'
|
||||||
|
commons: '${springdata.commons.docs}'
|
||||||
include-xml-namespaces: false
|
include-xml-namespaces: false
|
||||||
spring-data-commons-docs-url: https://docs.spring.io/spring-data/commons/reference
|
spring-data-commons-docs-url: '${documentation.baseurl}/spring-data/commons/reference/${springdata.commons.short}'
|
||||||
spring-data-commons-javadoc-base: https://docs.spring.io/spring-data/commons/docs/${springdata.commons}/api/
|
spring-data-commons-javadoc-base: '{spring-data-commons-docs-url}/api/java'
|
||||||
springdocsurl: https://docs.spring.io/spring-framework/reference/{springversionshort}
|
springdocsurl: '${documentation.baseurl}/spring-framework/reference/{springversionshort}'
|
||||||
springjavadocurl: https://docs.spring.io/spring-framework/docs/${spring}/javadoc-api
|
|
||||||
spring-framework-docs: '{springdocsurl}'
|
spring-framework-docs: '{springdocsurl}'
|
||||||
|
springjavadocurl: '${documentation.spring-javadoc-url}'
|
||||||
spring-framework-javadoc: '{springjavadocurl}'
|
spring-framework-javadoc: '{springjavadocurl}'
|
||||||
springhateoasversion: ${spring-hateoas}
|
springhateoasversion: '${spring-hateoas}'
|
||||||
releasetrainversion: ${releasetrain}
|
releasetrainversion: '${releasetrain}'
|
||||||
store: Elasticsearch
|
store: Elasticsearch
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2020-2024 the original author or authors.
|
* Copyright 2020-present the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2022-2024 the original author or authors.
|
* Copyright 2022-present the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2019-2024 the original author or authors.
|
* Copyright 2019-present the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2021-2024 the original author or authors.
|
* Copyright 2021-present the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2022-2024 the original author or authors.
|
* Copyright 2022-present the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2021-2024 the original author or authors.
|
* Copyright 2021-present the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
|||||||
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2020-2024 the original author or authors.
|
* Copyright 2020-present the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2023-2024 the original author or authors.
|
* Copyright 2023-present the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
|||||||
@@ -0,0 +1,79 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2024-present the original author or authors.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
package org.springframework.data.elasticsearch.annotations;
|
||||||
|
|
||||||
|
import java.lang.annotation.ElementType;
|
||||||
|
import java.lang.annotation.Inherited;
|
||||||
|
import java.lang.annotation.Repeatable;
|
||||||
|
import java.lang.annotation.Retention;
|
||||||
|
import java.lang.annotation.RetentionPolicy;
|
||||||
|
import java.lang.annotation.Target;
|
||||||
|
|
||||||
|
import org.springframework.core.annotation.AliasFor;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Identifies an alias for the index.
|
||||||
|
*
|
||||||
|
* @author Youssef Aouichaoui
|
||||||
|
* @since 5.4
|
||||||
|
*/
|
||||||
|
@Inherited
|
||||||
|
@Retention(RetentionPolicy.RUNTIME)
|
||||||
|
@Target({ ElementType.TYPE })
|
||||||
|
@Repeatable(Aliases.class)
|
||||||
|
public @interface Alias {
|
||||||
|
/**
|
||||||
|
* @return Index alias name. Alias for {@link #alias}.
|
||||||
|
*/
|
||||||
|
@AliasFor("alias")
|
||||||
|
String value() default "";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return Index alias name. Alias for {@link #value}.
|
||||||
|
*/
|
||||||
|
@AliasFor("value")
|
||||||
|
String alias() default "";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return Query used to limit documents the alias can access.
|
||||||
|
*/
|
||||||
|
Filter filter() default @Filter;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return Used to route indexing operations to a specific shard.
|
||||||
|
*/
|
||||||
|
String indexRouting() default "";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return Used to route indexing and search operations to a specific shard.
|
||||||
|
*/
|
||||||
|
String routing() default "";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return Used to route search operations to a specific shard.
|
||||||
|
*/
|
||||||
|
String searchRouting() default "";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return Is the alias hidden?
|
||||||
|
*/
|
||||||
|
boolean isHidden() default false;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return Is it the 'write index' for the alias?
|
||||||
|
*/
|
||||||
|
boolean isWriteIndex() default false;
|
||||||
|
}
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2024-present the original author or authors.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
package org.springframework.data.elasticsearch.annotations;
|
||||||
|
|
||||||
|
import java.lang.annotation.ElementType;
|
||||||
|
import java.lang.annotation.Inherited;
|
||||||
|
import java.lang.annotation.Retention;
|
||||||
|
import java.lang.annotation.RetentionPolicy;
|
||||||
|
import java.lang.annotation.Target;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Container annotation that aggregates several {@link Alias} annotations.
|
||||||
|
*
|
||||||
|
* @author Youssef Aouichaoui
|
||||||
|
* @see Alias
|
||||||
|
* @since 5.4
|
||||||
|
*/
|
||||||
|
@Inherited
|
||||||
|
@Retention(RetentionPolicy.RUNTIME)
|
||||||
|
@Target({ ElementType.TYPE })
|
||||||
|
public @interface Aliases {
|
||||||
|
Alias[] value();
|
||||||
|
}
|
||||||
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2019-2024 the original author or authors.
|
* Copyright 2019-present the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
|||||||
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2013-2024 the original author or authors.
|
* Copyright 2013-present the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2021-2024 the original author or authors.
|
* Copyright 2021-present the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2014-2024 the original author or authors.
|
* Copyright 2014-present the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2013-2024 the original author or authors.
|
* Copyright 2013-present the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@@ -100,6 +100,13 @@ public @interface Document {
|
|||||||
*/
|
*/
|
||||||
boolean storeVersionInSource() default true;
|
boolean storeVersionInSource() default true;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Aliases for the index.
|
||||||
|
*
|
||||||
|
* @since 5.4
|
||||||
|
*/
|
||||||
|
Alias[] aliases() default {};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @since 4.3
|
* @since 4.3
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2021-2024 the original author or authors.
|
* Copyright 2021-present the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2013-2024 the original author or authors.
|
* Copyright 2013-present the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@@ -37,6 +37,8 @@ import org.springframework.core.annotation.AliasFor;
|
|||||||
* @author Brian Kimmig
|
* @author Brian Kimmig
|
||||||
* @author Morgan Lutz
|
* @author Morgan Lutz
|
||||||
* @author Sascha Woo
|
* @author Sascha Woo
|
||||||
|
* @author Haibo Liu
|
||||||
|
* @author Andriy Redko
|
||||||
*/
|
*/
|
||||||
@Retention(RetentionPolicy.RUNTIME)
|
@Retention(RetentionPolicy.RUNTIME)
|
||||||
@Target({ ElementType.FIELD, ElementType.ANNOTATION_TYPE, ElementType.METHOD })
|
@Target({ ElementType.FIELD, ElementType.ANNOTATION_TYPE, ElementType.METHOD })
|
||||||
@@ -128,6 +130,10 @@ public @interface Field {
|
|||||||
boolean norms() default true;
|
boolean norms() default true;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* NOte that null_value setting are not supported in Elasticsearch for all types. For example setting a null_value on
|
||||||
|
* a field with type text will throw an exception in the server when the mapping is written to Elasticsearch. Alas,
|
||||||
|
* the Elasticsearch documentation does not specify on which types it is allowed on which it is not.
|
||||||
|
*
|
||||||
* @since 4.0
|
* @since 4.0
|
||||||
*/
|
*/
|
||||||
String nullValue() default "";
|
String nullValue() default "";
|
||||||
@@ -195,6 +201,27 @@ public @interface Field {
|
|||||||
*/
|
*/
|
||||||
int dims() default -1;
|
int dims() default -1;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* to be used in combination with {@link FieldType#Dense_Vector}
|
||||||
|
*
|
||||||
|
* @since 5.4
|
||||||
|
*/
|
||||||
|
String elementType() default FieldElementType.DEFAULT;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* to be used in combination with {@link FieldType#Dense_Vector}
|
||||||
|
*
|
||||||
|
* @since 5.4
|
||||||
|
*/
|
||||||
|
KnnSimilarity knnSimilarity() default KnnSimilarity.DEFAULT;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* to be used in combination with {@link FieldType#Dense_Vector}
|
||||||
|
*
|
||||||
|
* @since 5.4
|
||||||
|
*/
|
||||||
|
KnnIndexOptions[] knnIndexOptions() default {};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Controls how Elasticsearch dynamically adds fields to the inner object within the document.<br>
|
* Controls how Elasticsearch dynamically adds fields to the inner object within the document.<br>
|
||||||
* To be used in combination with {@link FieldType#Object} or {@link FieldType#Nested}
|
* To be used in combination with {@link FieldType#Object} or {@link FieldType#Nested}
|
||||||
@@ -218,4 +245,11 @@ public @interface Field {
|
|||||||
* @since 5.1
|
* @since 5.1
|
||||||
*/
|
*/
|
||||||
boolean storeEmptyValue() default true;
|
boolean storeEmptyValue() default true;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* overrides the field type in the mapping which otherwise will be taken from corresponding {@link FieldType}
|
||||||
|
*
|
||||||
|
* @since 5.4
|
||||||
|
*/
|
||||||
|
String mappedTypeName() default "";
|
||||||
}
|
}
|
||||||
|
|||||||
+26
@@ -0,0 +1,26 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2024-present the original author or authors.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
package org.springframework.data.elasticsearch.annotations;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Haibo Liu
|
||||||
|
* @since 5.4
|
||||||
|
*/
|
||||||
|
public final class FieldElementType {
|
||||||
|
public final static String DEFAULT = "";
|
||||||
|
public final static String FLOAT = "float";
|
||||||
|
public final static String BYTE = "byte";
|
||||||
|
}
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2013-2024 the original author or authors.
|
* Copyright 2013-present the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
|||||||
@@ -0,0 +1,38 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2024-present the original author or authors.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
package org.springframework.data.elasticsearch.annotations;
|
||||||
|
|
||||||
|
import org.springframework.core.annotation.AliasFor;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Query used to limit documents.
|
||||||
|
*
|
||||||
|
* @author Youssef Aouichaoui
|
||||||
|
* @since 5.4
|
||||||
|
*/
|
||||||
|
public @interface Filter {
|
||||||
|
/**
|
||||||
|
* @return Query used to limit documents. Alias for {@link #query}.
|
||||||
|
*/
|
||||||
|
@AliasFor("query")
|
||||||
|
String value() default "";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return Query used to limit documents. Alias for {@link #value}.
|
||||||
|
*/
|
||||||
|
@AliasFor("value")
|
||||||
|
String query() default "";
|
||||||
|
}
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2013-2024 the original author or authors.
|
* Copyright 2013-present the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2017-2024 the original author or authors.
|
* Copyright 2017-present the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2020-2024 the original author or authors.
|
* Copyright 2020-present the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
|||||||
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2020-2024 the original author or authors.
|
* Copyright 2020-present the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
|||||||
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2020-2024 the original author or authors.
|
* Copyright 2020-present the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2019-2024 the original author or authors.
|
* Copyright 2019-present the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2019-2024 the original author or authors.
|
* Copyright 2019-present the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
|||||||
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2023-2024 the original author or authors.
|
* Copyright 2023-present the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2014-2024 the original author or authors.
|
* Copyright 2014-present the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@@ -29,6 +29,8 @@ import java.lang.annotation.Target;
|
|||||||
* @author Aleksei Arsenev
|
* @author Aleksei Arsenev
|
||||||
* @author Brian Kimmig
|
* @author Brian Kimmig
|
||||||
* @author Morgan Lutz
|
* @author Morgan Lutz
|
||||||
|
* @author Haibo Liu
|
||||||
|
* @author Andriy Redko
|
||||||
*/
|
*/
|
||||||
@Retention(RetentionPolicy.RUNTIME)
|
@Retention(RetentionPolicy.RUNTIME)
|
||||||
@Target(ElementType.ANNOTATION_TYPE)
|
@Target(ElementType.ANNOTATION_TYPE)
|
||||||
@@ -149,4 +151,32 @@ public @interface InnerField {
|
|||||||
* @since 4.2
|
* @since 4.2
|
||||||
*/
|
*/
|
||||||
int dims() default -1;
|
int dims() default -1;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* to be used in combination with {@link FieldType#Dense_Vector}
|
||||||
|
*
|
||||||
|
* @since 5.4
|
||||||
|
*/
|
||||||
|
String elementType() default FieldElementType.DEFAULT;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* to be used in combination with {@link FieldType#Dense_Vector}
|
||||||
|
*
|
||||||
|
* @since 5.4
|
||||||
|
*/
|
||||||
|
KnnSimilarity knnSimilarity() default KnnSimilarity.DEFAULT;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* to be used in combination with {@link FieldType#Dense_Vector}
|
||||||
|
*
|
||||||
|
* @since 5.4
|
||||||
|
*/
|
||||||
|
KnnIndexOptions[] knnIndexOptions() default {};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* overrides the field type in the mapping which otherwise will be taken from corresponding {@link FieldType}
|
||||||
|
*
|
||||||
|
* @since 5.4
|
||||||
|
*/
|
||||||
|
String mappedTypeName() default "";
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2020-2024 the original author or authors.
|
* Copyright 2020-present the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
|||||||
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2020-2024 the original author or authors.
|
* Copyright 2020-present the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
|||||||
+38
@@ -0,0 +1,38 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2024-present the original author or authors.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
package org.springframework.data.elasticsearch.annotations;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Haibo Liu
|
||||||
|
* @since 5.4
|
||||||
|
*/
|
||||||
|
public enum KnnAlgorithmType {
|
||||||
|
HNSW("hnsw"),
|
||||||
|
INT8_HNSW("int8_hnsw"),
|
||||||
|
FLAT("flat"),
|
||||||
|
INT8_FLAT("int8_flat"),
|
||||||
|
DEFAULT("");
|
||||||
|
|
||||||
|
private final String type;
|
||||||
|
|
||||||
|
KnnAlgorithmType(String type) {
|
||||||
|
this.type = type;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getType() {
|
||||||
|
return type;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,40 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2024-present the original author or authors.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
package org.springframework.data.elasticsearch.annotations;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Haibo Liu
|
||||||
|
* @since 5.4
|
||||||
|
*/
|
||||||
|
public @interface KnnIndexOptions {
|
||||||
|
|
||||||
|
KnnAlgorithmType type() default KnnAlgorithmType.DEFAULT;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Only applicable to {@link KnnAlgorithmType#HNSW} and {@link KnnAlgorithmType#INT8_HNSW} index types.
|
||||||
|
*/
|
||||||
|
int m() default -1;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Only applicable to {@link KnnAlgorithmType#HNSW} and {@link KnnAlgorithmType#INT8_HNSW} index types.
|
||||||
|
*/
|
||||||
|
int efConstruction() default -1;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Only applicable to {@link KnnAlgorithmType#INT8_HNSW} and {@link KnnAlgorithmType#INT8_FLAT} index types.
|
||||||
|
*/
|
||||||
|
float confidenceInterval() default -1F;
|
||||||
|
}
|
||||||
@@ -0,0 +1,38 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2024-present the original author or authors.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
package org.springframework.data.elasticsearch.annotations;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Haibo Liu
|
||||||
|
* @since 5.4
|
||||||
|
*/
|
||||||
|
public enum KnnSimilarity {
|
||||||
|
L2_NORM("l2_norm"),
|
||||||
|
DOT_PRODUCT("dot_product"),
|
||||||
|
COSINE("cosine"),
|
||||||
|
MAX_INNER_PRODUCT("max_inner_product"),
|
||||||
|
DEFAULT("");
|
||||||
|
|
||||||
|
private final String similarity;
|
||||||
|
|
||||||
|
KnnSimilarity(String similarity) {
|
||||||
|
this.similarity = similarity;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getSimilarity() {
|
||||||
|
return similarity;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2014-2024 the original author or authors.
|
* Copyright 2014-present the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2024 the original author or authors.
|
* Copyright 2024-present the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2014-2024 the original author or authors.
|
* Copyright 2014-present the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2020-2024 the original author or authors.
|
* Copyright 2020-present the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2013-2024 the original author or authors.
|
* Copyright 2013-present the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
|||||||
+42
@@ -0,0 +1,42 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2025-present the original author or authors.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
package org.springframework.data.elasticsearch.annotations;
|
||||||
|
|
||||||
|
import org.springframework.data.annotation.QueryAnnotation;
|
||||||
|
|
||||||
|
import java.lang.annotation.Documented;
|
||||||
|
import java.lang.annotation.ElementType;
|
||||||
|
import java.lang.annotation.Retention;
|
||||||
|
import java.lang.annotation.RetentionPolicy;
|
||||||
|
import java.lang.annotation.Target;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Annotation to mark a repository method as a search template method. The annotation defines the search template id,
|
||||||
|
* the parameters for the search template are taken from the method's arguments.
|
||||||
|
*
|
||||||
|
* @author P.J. Meisch (pj.meisch@sothawo.com)
|
||||||
|
* @since 5.5
|
||||||
|
*/
|
||||||
|
@Retention(RetentionPolicy.RUNTIME)
|
||||||
|
@Target({ ElementType.METHOD, ElementType.ANNOTATION_TYPE })
|
||||||
|
@Documented
|
||||||
|
@QueryAnnotation
|
||||||
|
public @interface SearchTemplateQuery {
|
||||||
|
/**
|
||||||
|
* The id of the search template. Must not be empt or null.
|
||||||
|
*/
|
||||||
|
String id();
|
||||||
|
}
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2014-2024 the original author or authors.
|
* Copyright 2014-present the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2019-2024 the original author or authors.
|
* Copyright 2019-present the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2022-2024 the original author or authors.
|
* Copyright 2022-present the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2019-2024 the original author or authors.
|
* Copyright 2019-present the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
|||||||
+2
-2
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2021-2024 the original author or authors.
|
* Copyright 2021-present the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@@ -41,7 +41,7 @@ public @interface ValueConverter {
|
|||||||
* Defines the class implementing the {@link PropertyValueConverter} interface. If this is a normal class, it must
|
* Defines the class implementing the {@link PropertyValueConverter} interface. If this is a normal class, it must
|
||||||
* provide a default constructor with no arguments. If this is an enum and thus implementing a singleton by enum it
|
* provide a default constructor with no arguments. If this is an enum and thus implementing a singleton by enum it
|
||||||
* must only have one enum value.
|
* must only have one enum value.
|
||||||
*
|
*
|
||||||
* @return the class to use for conversion
|
* @return the class to use for conversion
|
||||||
*/
|
*/
|
||||||
Class<? extends PropertyValueConverter> value();
|
Class<? extends PropertyValueConverter> value();
|
||||||
|
|||||||
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2022-2024 the original author or authors.
|
* Copyright 2022-present the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2021-2024 the original author or authors.
|
* Copyright 2021-present the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
|||||||
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2023-2024 the original author or authors.
|
* Copyright 2023-present the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
|||||||
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2023-2024 the original author or authors.
|
* Copyright 2023-present the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
|||||||
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2018-2024 the original author or authors.
|
* Copyright 2018-present the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
|||||||
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2018-2024 the original author or authors.
|
* Copyright 2018-present the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
|||||||
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2018-2024 the original author or authors.
|
* Copyright 2018-present the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2018-2024 the original author or authors.
|
* Copyright 2018-present the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
|||||||
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2018-2024 the original author or authors.
|
* Copyright 2018-present the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
|||||||
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2018-2024 the original author or authors.
|
* Copyright 2018-present the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
|||||||
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2022-2024 the original author or authors.
|
* Copyright 2022-present the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
|||||||
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2022-2024 the original author or authors.
|
* Copyright 2022-present the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
|||||||
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2024 the original author or authors.
|
* Copyright 2024-present the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2022-2024 the original author or authors.
|
* Copyright 2022-present the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
|||||||
+8
-3
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2021-2024 the original author or authors.
|
* Copyright 2021-present the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@@ -18,6 +18,8 @@ package org.springframework.data.elasticsearch.client.elc;
|
|||||||
import co.elastic.clients.elasticsearch.ElasticsearchClient;
|
import co.elastic.clients.elasticsearch.ElasticsearchClient;
|
||||||
import co.elastic.clients.transport.ElasticsearchTransport;
|
import co.elastic.clients.transport.ElasticsearchTransport;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
import org.elasticsearch.client.RestClient;
|
import org.elasticsearch.client.RestClient;
|
||||||
import org.springframework.util.Assert;
|
import org.springframework.util.Assert;
|
||||||
|
|
||||||
@@ -36,7 +38,10 @@ public class AutoCloseableElasticsearchClient extends ElasticsearchClient implem
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void close() throws Exception {
|
public void close() throws IOException {
|
||||||
transport.close();
|
// since Elasticsearch 8.16 the ElasticsearchClient implements (through ApiClient) the Closeable interface and
|
||||||
|
// handles closing of the underlying transport. We now just call the base class, but keep this as we
|
||||||
|
// have been implementing AutoCloseable since 4.4 and won't change that to a mere Closeable
|
||||||
|
super.close();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2021-2024 the original author or authors.
|
* Copyright 2021-present the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
|||||||
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2021-2024 the original author or authors.
|
* Copyright 2021-present the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
|||||||
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2021-2024 the original author or authors.
|
* Copyright 2021-present the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
|||||||
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2021-2024 the original author or authors.
|
* Copyright 2021-present the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
|||||||
+39
-34
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2021-2024 the original author or authors.
|
* Copyright 2021-present the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@@ -127,7 +127,7 @@ class CriteriaQueryProcessor extends AbstractQueryProcessor {
|
|||||||
mustQueries.add(Query.of(qb -> qb.matchAll(m -> m)));
|
mustQueries.add(Query.of(qb -> qb.matchAll(m -> m)));
|
||||||
}
|
}
|
||||||
|
|
||||||
return new Query.Builder().bool(boolQueryBuilder -> {
|
return new Query.Builder().bool(boolQueryBuilder -> {
|
||||||
|
|
||||||
if (!shouldQueries.isEmpty()) {
|
if (!shouldQueries.isEmpty()) {
|
||||||
boolQueryBuilder.should(shouldQueries);
|
boolQueryBuilder.should(shouldQueries);
|
||||||
@@ -249,49 +249,54 @@ class CriteriaQueryProcessor extends AbstractQueryProcessor {
|
|||||||
queryBuilder.queryString(queryStringQuery(fieldName, Objects.requireNonNull(value).toString(), boost));
|
queryBuilder.queryString(queryStringQuery(fieldName, Objects.requireNonNull(value).toString(), boost));
|
||||||
break;
|
break;
|
||||||
case LESS:
|
case LESS:
|
||||||
queryBuilder //
|
queryBuilder
|
||||||
.range(rb -> rb //
|
.range(rb -> rb
|
||||||
.field(fieldName) //
|
.untyped(ut -> ut
|
||||||
.lt(JsonData.of(value)) //
|
.field(fieldName)
|
||||||
.boost(boost)); //
|
.lt(JsonData.of(value))
|
||||||
|
.boost(boost)));
|
||||||
break;
|
break;
|
||||||
case LESS_EQUAL:
|
case LESS_EQUAL:
|
||||||
queryBuilder //
|
queryBuilder
|
||||||
.range(rb -> rb //
|
.range(rb -> rb
|
||||||
.field(fieldName) //
|
.untyped(ut -> ut
|
||||||
.lte(JsonData.of(value)) //
|
.field(fieldName)
|
||||||
.boost(boost)); //
|
.lte(JsonData.of(value))
|
||||||
|
.boost(boost)));
|
||||||
break;
|
break;
|
||||||
case GREATER:
|
case GREATER:
|
||||||
queryBuilder //
|
queryBuilder
|
||||||
.range(rb -> rb //
|
.range(rb -> rb
|
||||||
.field(fieldName) //
|
.untyped(ut -> ut
|
||||||
.gt(JsonData.of(value)) //
|
.field(fieldName)
|
||||||
.boost(boost)); //
|
.gt(JsonData.of(value))
|
||||||
|
.boost(boost)));
|
||||||
break;
|
break;
|
||||||
case GREATER_EQUAL:
|
case GREATER_EQUAL:
|
||||||
queryBuilder //
|
queryBuilder
|
||||||
.range(rb -> rb //
|
.range(rb -> rb
|
||||||
.field(fieldName) //
|
.untyped(ut -> ut
|
||||||
.gte(JsonData.of(value)) //
|
.field(fieldName)
|
||||||
.boost(boost)); //
|
.gte(JsonData.of(value))
|
||||||
|
.boost(boost)));
|
||||||
break;
|
break;
|
||||||
case BETWEEN:
|
case BETWEEN:
|
||||||
Object[] ranges = (Object[]) value;
|
Object[] ranges = (Object[]) value;
|
||||||
Assert.notNull(value, "value for a between condition must not be null");
|
Assert.notNull(value, "value for a between condition must not be null");
|
||||||
queryBuilder //
|
queryBuilder
|
||||||
.range(rb -> {
|
.range(rb -> rb
|
||||||
rb.field(fieldName);
|
.untyped(ut -> {
|
||||||
if (ranges[0] != null) {
|
ut.field(fieldName);
|
||||||
rb.gte(JsonData.of(ranges[0]));
|
if (ranges[0] != null) {
|
||||||
}
|
ut.gte(JsonData.of(ranges[0]));
|
||||||
|
}
|
||||||
|
|
||||||
if (ranges[1] != null) {
|
if (ranges[1] != null) {
|
||||||
rb.lte(JsonData.of(ranges[1]));
|
ut.lte(JsonData.of(ranges[1]));
|
||||||
}
|
}
|
||||||
rb.boost(boost); //
|
ut.boost(boost); //
|
||||||
return rb;
|
return ut;
|
||||||
}); //
|
}));
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case FUZZY:
|
case FUZZY:
|
||||||
|
|||||||
+3
-2
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2021-2024 the original author or authors.
|
* Copyright 2021-present the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@@ -50,6 +50,7 @@ import org.springframework.util.Assert;
|
|||||||
*
|
*
|
||||||
* @author Peter-Josef Meisch
|
* @author Peter-Josef Meisch
|
||||||
* @author Haibo Liu
|
* @author Haibo Liu
|
||||||
|
* @author Mohamed El Harrougui
|
||||||
* @since 4.4
|
* @since 4.4
|
||||||
*/
|
*/
|
||||||
final class DocumentAdapters {
|
final class DocumentAdapters {
|
||||||
@@ -74,7 +75,7 @@ final class DocumentAdapters {
|
|||||||
Map<String, SearchDocumentResponse> innerHits = new LinkedHashMap<>();
|
Map<String, SearchDocumentResponse> innerHits = new LinkedHashMap<>();
|
||||||
hit.innerHits().forEach((name, innerHitsResult) -> {
|
hit.innerHits().forEach((name, innerHitsResult) -> {
|
||||||
// noinspection ReturnOfNull
|
// noinspection ReturnOfNull
|
||||||
innerHits.put(name, SearchDocumentResponseBuilder.from(innerHitsResult.hits(), null, null, null, null, null,
|
innerHits.put(name, SearchDocumentResponseBuilder.from(innerHitsResult.hits(), null, null, null, 0, null, null,
|
||||||
searchDocument -> null, jsonpMapper));
|
searchDocument -> null, jsonpMapper));
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2022-2024 the original author or authors.
|
* Copyright 2022-present the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user