diff --git a/src/main/java/org/springframework/data/elasticsearch/core/RequestFactory.java b/src/main/java/org/springframework/data/elasticsearch/core/RequestFactory.java index a55af3538..8468d46e0 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/RequestFactory.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/RequestFactory.java @@ -600,7 +600,7 @@ private List getMultiRequestItems(Query searchQuery, Class // region indexing public IndexRequest indexRequest(IndexQuery query, IndexCoordinates index) { - String indexName = index.getIndexName(); + String indexName = query.getIndexName() != null ? query.getIndexName() : index.getIndexName(); IndexRequest indexRequest; Object queryObject = query.getObject(); @@ -1027,7 +1027,7 @@ private QueryRescorerBuilder getQueryRescorerBuilder(RescorerQuery rescorerQuery // region update public UpdateRequest updateRequest(UpdateQuery query, IndexCoordinates index) { - String indexName = index.getIndexName(); + String indexName = query.getIndexName() != null ? query.getIndexName() : index.getIndexName(); UpdateRequest updateRequest = new UpdateRequest(indexName, query.getId()); if (query.getScript() != null) { diff --git a/src/main/java/org/springframework/data/elasticsearch/core/query/IndexQuery.java b/src/main/java/org/springframework/data/elasticsearch/core/query/IndexQuery.java index 1b6607574..b0cacb8ed 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/query/IndexQuery.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/query/IndexQuery.java @@ -38,12 +38,13 @@ public class IndexQuery { @Nullable private Long primaryTerm; @Nullable private String routing; @Nullable private OpType opType; + @Nullable private String indexName; public IndexQuery() {} public IndexQuery(@Nullable String id, @Nullable Object object, @Nullable Long version, @Nullable String source, @Nullable String parentId, @Nullable Long seqNo, @Nullable Long primaryTerm, @Nullable String routing, - @Nullable OpType opType) { + @Nullable OpType opType, @Nullable String indexName) { this.id = id; this.object = object; this.version = version; @@ -53,6 +54,7 @@ public IndexQuery(@Nullable String id, @Nullable Object object, @Nullable Long v this.primaryTerm = primaryTerm; this.routing = routing; this.opType = opType; + this.indexName = indexName; } @Nullable @@ -152,6 +154,14 @@ public void setOpType(OpType opType) { this.opType = opType; } + /** + * @since 4.4 + */ + @Nullable + public String getIndexName() { + return indexName; + } + /** * OpType for the index operation. * diff --git a/src/main/java/org/springframework/data/elasticsearch/core/query/IndexQueryBuilder.java b/src/main/java/org/springframework/data/elasticsearch/core/query/IndexQueryBuilder.java index 4e0002e21..088da46d5 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/query/IndexQueryBuilder.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/query/IndexQueryBuilder.java @@ -40,6 +40,7 @@ public class IndexQueryBuilder { @Nullable private String routing; @Nullable private IndexQuery.OpType opType; @Nullable private RefreshPolicy refreshPolicy; + @Nullable private String indexName; public IndexQueryBuilder() {} @@ -89,6 +90,14 @@ public IndexQueryBuilder withOpType(IndexQuery.OpType opType) { } public IndexQuery build() { - return new IndexQuery(id, object, version, source, parentId, seqNo, primaryTerm, routing, opType); + return new IndexQuery(id, object, version, source, parentId, seqNo, primaryTerm, routing, opType, indexName); + } + + /** + * @since 4.4 + */ + public IndexQueryBuilder withIndex(@Nullable String indexName) { + this.indexName = indexName; + return this; } } diff --git a/src/main/java/org/springframework/data/elasticsearch/core/query/UpdateQuery.java b/src/main/java/org/springframework/data/elasticsearch/core/query/UpdateQuery.java index dd2c20510..d30e1ca72 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/query/UpdateQuery.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/query/UpdateQuery.java @@ -63,6 +63,7 @@ public class UpdateQuery { @Nullable private final Integer slices; @Nullable private final ScriptType scriptType; @Nullable private final String scriptName; + @Nullable private final String indexName; public static Builder builder(String id) { return new Builder(id); @@ -81,7 +82,7 @@ private UpdateQuery(String id, @Nullable String script, @Nullable Map