mirror of
https://github.com/spring-projects/spring-data-elasticsearch.git
synced 2025-06-23 04:22:12 +00:00
Polishing.
This commit is contained in:
parent
2d5f8e8219
commit
a16782ec73
@ -10,6 +10,7 @@
|
|||||||
* Add support for multi search template API.
|
* Add support for multi search template API.
|
||||||
* Add support for SpEL in @Query.
|
* Add support for SpEL in @Query.
|
||||||
* Add support for field aliases in the index mapping.
|
* Add support for field aliases in the index mapping.
|
||||||
|
* Add support for has_child and has_parent queries.
|
||||||
|
|
||||||
[[new-features.5-2-0]]
|
[[new-features.5-2-0]]
|
||||||
== New in Spring Data Elasticsearch 5.2
|
== New in Spring Data Elasticsearch 5.2
|
||||||
|
@ -15,17 +15,16 @@
|
|||||||
*/
|
*/
|
||||||
package org.springframework.data.elasticsearch.client.elc;
|
package org.springframework.data.elasticsearch.client.elc;
|
||||||
|
|
||||||
|
import java.util.function.Consumer;
|
||||||
|
|
||||||
import org.springframework.data.elasticsearch.core.query.CriteriaQuery;
|
import org.springframework.data.elasticsearch.core.query.CriteriaQuery;
|
||||||
import org.springframework.data.elasticsearch.core.query.Query;
|
import org.springframework.data.elasticsearch.core.query.Query;
|
||||||
import org.springframework.data.elasticsearch.core.query.StringQuery;
|
import org.springframework.data.elasticsearch.core.query.StringQuery;
|
||||||
import org.springframework.lang.Nullable;
|
import org.springframework.lang.Nullable;
|
||||||
import org.springframework.util.Assert;
|
|
||||||
|
|
||||||
import java.util.function.Consumer;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* An abstract class that serves as a base for query processors.
|
* An abstract class that serves as a base for query processors. It provides a common interface and basic functionality
|
||||||
* It provides a common interface and basic functionality for query processing.
|
* for query processing.
|
||||||
*
|
*
|
||||||
* @author Aouichaoui Youssef
|
* @author Aouichaoui Youssef
|
||||||
* @since 5.3
|
* @since 5.3
|
||||||
|
@ -16,7 +16,7 @@
|
|||||||
package org.springframework.data.elasticsearch.client.elc;
|
package org.springframework.data.elasticsearch.client.elc;
|
||||||
|
|
||||||
import static org.springframework.data.elasticsearch.client.elc.Queries.*;
|
import static org.springframework.data.elasticsearch.client.elc.Queries.*;
|
||||||
import static org.springframework.data.elasticsearch.client.elc.TypeUtils.scoreMode;
|
import static org.springframework.data.elasticsearch.client.elc.TypeUtils.*;
|
||||||
import static org.springframework.util.StringUtils.*;
|
import static org.springframework.util.StringUtils.*;
|
||||||
|
|
||||||
import co.elastic.clients.elasticsearch._types.FieldValue;
|
import co.elastic.clients.elasticsearch._types.FieldValue;
|
||||||
@ -32,12 +32,10 @@ import java.util.List;
|
|||||||
|
|
||||||
import org.springframework.data.elasticsearch.annotations.FieldType;
|
import org.springframework.data.elasticsearch.annotations.FieldType;
|
||||||
import org.springframework.data.elasticsearch.core.query.Criteria;
|
import org.springframework.data.elasticsearch.core.query.Criteria;
|
||||||
import org.springframework.data.elasticsearch.core.query.CriteriaQuery;
|
|
||||||
import org.springframework.data.elasticsearch.core.query.Field;
|
import org.springframework.data.elasticsearch.core.query.Field;
|
||||||
import org.springframework.data.elasticsearch.core.query.HasChildQuery;
|
import org.springframework.data.elasticsearch.core.query.HasChildQuery;
|
||||||
import org.springframework.data.elasticsearch.core.query.HasParentQuery;
|
import org.springframework.data.elasticsearch.core.query.HasParentQuery;
|
||||||
import org.springframework.data.elasticsearch.core.query.InnerHitsQuery;
|
import org.springframework.data.elasticsearch.core.query.InnerHitsQuery;
|
||||||
import org.springframework.data.elasticsearch.core.query.StringQuery;
|
|
||||||
import org.springframework.lang.Nullable;
|
import org.springframework.lang.Nullable;
|
||||||
import org.springframework.util.Assert;
|
import org.springframework.util.Assert;
|
||||||
|
|
||||||
@ -359,8 +357,7 @@ class CriteriaQueryProcessor extends AbstractQueryProcessor {
|
|||||||
.ignoreUnmapped(query.getIgnoreUnmapped())
|
.ignoreUnmapped(query.getIgnoreUnmapped())
|
||||||
.minChildren(query.getMinChildren())
|
.minChildren(query.getMinChildren())
|
||||||
.maxChildren(query.getMaxChildren())
|
.maxChildren(query.getMaxChildren())
|
||||||
.scoreMode(scoreMode(query.getScoreMode()))
|
.scoreMode(scoreMode(query.getScoreMode())));
|
||||||
);
|
|
||||||
} else {
|
} else {
|
||||||
throw new CriteriaQueryException("value for " + fieldName + " is not a has_child query");
|
throw new CriteriaQueryException("value for " + fieldName + " is not a has_child query");
|
||||||
}
|
}
|
||||||
@ -372,8 +369,7 @@ class CriteriaQueryProcessor extends AbstractQueryProcessor {
|
|||||||
.query(getEsQuery(query.getQuery(), null))
|
.query(getEsQuery(query.getQuery(), null))
|
||||||
.innerHits(getInnerHits(query.getInnerHitsQuery()))
|
.innerHits(getInnerHits(query.getInnerHitsQuery()))
|
||||||
.ignoreUnmapped(query.getIgnoreUnmapped())
|
.ignoreUnmapped(query.getIgnoreUnmapped())
|
||||||
.score(query.getScore())
|
.score(query.getScore()));
|
||||||
);
|
|
||||||
} else {
|
} else {
|
||||||
throw new CriteriaQueryException("value for " + fieldName + " is not a has_parent query");
|
throw new CriteriaQueryException("value for " + fieldName + " is not a has_parent query");
|
||||||
}
|
}
|
||||||
|
@ -1007,8 +1007,7 @@ public class Criteria {
|
|||||||
/**
|
/**
|
||||||
* @since 5.3
|
* @since 5.3
|
||||||
*/
|
*/
|
||||||
HAS_CHILD,
|
HAS_CHILD, HAS_PARENT;
|
||||||
HAS_PARENT;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return true if this key does not have an associated value
|
* @return true if this key does not have an associated value
|
||||||
|
@ -22,7 +22,8 @@ import org.springframework.util.Assert;
|
|||||||
* Defines a has_child request.
|
* Defines a has_child request.
|
||||||
*
|
*
|
||||||
* @author Aouichaoui Youssef
|
* @author Aouichaoui Youssef
|
||||||
* @see <a href="https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-has-child-query.html">docs</a>
|
* @see <a href=
|
||||||
|
* "https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-has-child-query.html">docs</a>
|
||||||
* @since 5.3
|
* @since 5.3
|
||||||
*/
|
*/
|
||||||
public class HasChildQuery {
|
public class HasChildQuery {
|
||||||
@ -37,20 +38,20 @@ public class HasChildQuery {
|
|||||||
private final Query query;
|
private final Query query;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Indicates whether to ignore an unmapped {@link #type} and not return any documents instead of an error.
|
* Indicates whether to ignore an unmapped {@link #type} and not return any documents instead of an error. Default,
|
||||||
* Default, this is set to {@code false}.
|
* this is set to {@code false}.
|
||||||
*/
|
*/
|
||||||
@Nullable private final Boolean ignoreUnmapped;
|
@Nullable private final Boolean ignoreUnmapped;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The Maximum number of child documents that match the {@link #query} allowed for a returned parent document.
|
* The Maximum number of child documents that match the {@link #query} allowed for a returned parent document. If the
|
||||||
* If the parent document exceeds this limit, it is excluded from the search results.
|
* parent document exceeds this limit, it is excluded from the search results.
|
||||||
*/
|
*/
|
||||||
@Nullable private final Integer maxChildren;
|
@Nullable private final Integer maxChildren;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Minimum number of child documents that match the query required to match the {@link #query} for a returned parent document.
|
* Minimum number of child documents that match the query required to match the {@link #query} for a returned parent
|
||||||
* If the parent document does not meet this limit, it is excluded from the search results.
|
* document. If the parent document does not meet this limit, it is excluded from the search results.
|
||||||
*/
|
*/
|
||||||
@Nullable private final Integer minChildren;
|
@Nullable private final Integer minChildren;
|
||||||
|
|
||||||
@ -147,8 +148,8 @@ public class HasChildQuery {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Indicates whether to ignore an unmapped {@link #type} and not return any documents instead of an error.
|
* Indicates whether to ignore an unmapped {@link #type} and not return any documents instead of an error. Default,
|
||||||
* Default, this is set to {@code false}.
|
* this is set to {@code false}.
|
||||||
*/
|
*/
|
||||||
public Builder withIgnoreUnmapped(@Nullable Boolean ignoreUnmapped) {
|
public Builder withIgnoreUnmapped(@Nullable Boolean ignoreUnmapped) {
|
||||||
this.ignoreUnmapped = ignoreUnmapped;
|
this.ignoreUnmapped = ignoreUnmapped;
|
||||||
@ -157,8 +158,8 @@ public class HasChildQuery {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The Maximum number of child documents that match the {@link #query} allowed for a returned parent document.
|
* The Maximum number of child documents that match the {@link #query} allowed for a returned parent document. If
|
||||||
* If the parent document exceeds this limit, it is excluded from the search results.
|
* the parent document exceeds this limit, it is excluded from the search results.
|
||||||
*/
|
*/
|
||||||
public Builder withMaxChildren(@Nullable Integer maxChildren) {
|
public Builder withMaxChildren(@Nullable Integer maxChildren) {
|
||||||
this.maxChildren = maxChildren;
|
this.maxChildren = maxChildren;
|
||||||
@ -167,8 +168,8 @@ public class HasChildQuery {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Minimum number of child documents that match the query required to match the {@link #query} for a returned parent document.
|
* Minimum number of child documents that match the query required to match the {@link #query} for a returned parent
|
||||||
* If the parent document does not meet this limit, it is excluded from the search results.
|
* document. If the parent document does not meet this limit, it is excluded from the search results.
|
||||||
*/
|
*/
|
||||||
public Builder withMinChildren(@Nullable Integer minChildren) {
|
public Builder withMinChildren(@Nullable Integer minChildren) {
|
||||||
this.minChildren = minChildren;
|
this.minChildren = minChildren;
|
||||||
|
@ -22,7 +22,8 @@ import org.springframework.util.Assert;
|
|||||||
* Defines a has_parent request.
|
* Defines a has_parent request.
|
||||||
*
|
*
|
||||||
* @author Aouichaoui Youssef
|
* @author Aouichaoui Youssef
|
||||||
* @see <a href="https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-has-parent-query.html">docs</a>
|
* @see <a href=
|
||||||
|
* "https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-has-parent-query.html">docs</a>
|
||||||
* @since 5.3
|
* @since 5.3
|
||||||
*/
|
*/
|
||||||
public class HasParentQuery {
|
public class HasParentQuery {
|
||||||
|
@ -71,8 +71,7 @@ public class InnerHitsQuery {
|
|||||||
@Nullable private Integer size;
|
@Nullable private Integer size;
|
||||||
@Nullable private Integer from;
|
@Nullable private Integer from;
|
||||||
|
|
||||||
private Builder() {
|
private Builder() {}
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The name to be used for the particular inner hit definition in the response.
|
* The name to be used for the particular inner hit definition in the response.
|
||||||
|
@ -5013,21 +5013,18 @@ public abstract class ElasticsearchIntegrationTests {
|
|||||||
|
|
||||||
@Document(indexName = "#{@indexNameProvider.indexName()}-join")
|
@Document(indexName = "#{@indexNameProvider.indexName()}-join")
|
||||||
private static class RootEntity {
|
private static class RootEntity {
|
||||||
@Id
|
@Id private String id;
|
||||||
private String id;
|
|
||||||
|
|
||||||
@Field(type = FieldType.Object)
|
@Field(type = FieldType.Object) private Child child;
|
||||||
private Child child;
|
|
||||||
|
|
||||||
@Field(type = FieldType.Object)
|
@Field(type = FieldType.Object) private Parent parent;
|
||||||
private Parent parent;
|
|
||||||
|
|
||||||
@JoinTypeRelations(relations = {
|
@JoinTypeRelations(relations = {
|
||||||
@JoinTypeRelation(parent = "parent", children = {"child"})
|
@JoinTypeRelation(parent = "parent", children = { "child" })
|
||||||
})
|
}) private JoinField<String> relation = new JoinField<>("parent");
|
||||||
private JoinField<String> relation = new JoinField<>("parent");
|
|
||||||
|
|
||||||
private static final class Child {}
|
private static final class Child {}
|
||||||
|
|
||||||
private static final class Parent {}
|
private static final class Parent {}
|
||||||
|
|
||||||
public static Builder builder() {
|
public static Builder builder() {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user