Skip to content

Add SearchFailure field in ByQueryResponse #1705

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@

import org.elasticsearch.action.bulk.BulkItemResponse;
import org.elasticsearch.index.reindex.BulkByScrollResponse;
import org.elasticsearch.index.reindex.ScrollableHitSource;
import org.springframework.lang.Nullable;

/**
Expand All @@ -43,10 +44,11 @@ public class ByQueryResponse {
private final long searchRetries;
@Nullable private final String reasonCancelled;
private final List<Failure> failures;
private final List<SearchFailure> searchFailures;

private ByQueryResponse(long took, boolean timedOut, long total, long updated, long deleted, int batches,
long versionConflicts, long noops, long bulkRetries, long searchRetries, @Nullable String reasonCancelled,
List<Failure> failures) {
long versionConflicts, long noops, long bulkRetries, long searchRetries,
@Nullable String reasonCancelled, List<Failure> failures, List<SearchFailure> searchFailures) {
this.took = took;
this.timedOut = timedOut;
this.total = total;
Expand All @@ -59,7 +61,8 @@ private ByQueryResponse(long took, boolean timedOut, long total, long updated, l
this.searchRetries = searchRetries;
this.reasonCancelled = reasonCancelled;
this.failures = failures;
}
this.searchFailures = searchFailures;
}

/**
* The number of milliseconds from start to end of the whole operation.
Expand Down Expand Up @@ -148,7 +151,14 @@ public List<Failure> getFailures() {
return failures;
}

/**
/**
* Failures during search phase
*/
public List<SearchFailure> getSearchFailures() {
return searchFailures;
}

/**
* Create a new {@link ByQueryResponseBuilder} to build {@link ByQueryResponse}
*
* @return a new {@link ByQueryResponseBuilder} to build {@link ByQueryResponse}
Expand All @@ -163,7 +173,12 @@ public static ByQueryResponse of(BulkByScrollResponse bulkByScrollResponse) {
.map(Failure::of) //
.collect(Collectors.toList()); //

return ByQueryResponse.builder() //
final List<SearchFailure> searchFailures = bulkByScrollResponse.getSearchFailures() //
.stream() //
.map(SearchFailure::of) //
.collect(Collectors.toList());//

return ByQueryResponse.builder() //
.withTook(bulkByScrollResponse.getTook().getMillis()) //
.withTimedOut(bulkByScrollResponse.isTimedOut()) //
.withTotal(bulkByScrollResponse.getTotal()) //
Expand All @@ -176,6 +191,7 @@ public static ByQueryResponse of(BulkByScrollResponse bulkByScrollResponse) {
.withSearchRetries(bulkByScrollResponse.getSearchRetries()) //
.withReasonCancelled(bulkByScrollResponse.getReasonCancelled()) //
.withFailures(failures) //
.withSearchFailure(searchFailures) //
.build(); //
}

Expand Down Expand Up @@ -331,6 +347,115 @@ public Failure build() {
}
}

public static class SearchFailure {
private final Throwable reason;
@Nullable private final Integer status;
@Nullable private final String index;
@Nullable private final Integer shardId;
@Nullable private final String nodeId;

private SearchFailure(Throwable reason, @Nullable Integer status, @Nullable String index,
@Nullable Integer shardId, @Nullable String nodeId) {
this.reason = reason;
this.status = status;
this.index = index;
this.shardId = shardId;
this.nodeId = nodeId;
}

public Throwable getReason() {
return reason;
}

@Nullable
public Integer getStatus() {
return status;
}

@Nullable
public String getIndex() {
return index;
}

@Nullable
public Integer getShardId() {
return shardId;
}

@Nullable
public String getNodeId() {
return nodeId;
}

/**
* Create a new {@link SearchFailureBuilder} to build {@link SearchFailure}
*
* @return a new {@link SearchFailureBuilder} to build {@link SearchFailure}
*/
public static SearchFailureBuilder builder() {
return new SearchFailureBuilder();
}

/**
* Create a new {@link SearchFailure} from {@link ScrollableHitSource.SearchFailure}
*
* @param searchFailure {@link ScrollableHitSource.SearchFailure} to translate
* @return a new {@link SearchFailure}
*/
public static SearchFailure of(ScrollableHitSource.SearchFailure searchFailure) {
return builder() //
.withReason(searchFailure.getReason()) //
.withIndex(searchFailure.getIndex()) //
.withNodeId(searchFailure.getNodeId()) //
.withShardId(searchFailure.getShardId()) //
.withStatus(searchFailure.getStatus().getStatus()) //
.build(); //
}

/**
* Builder for {@link SearchFailure}
*/
public static final class SearchFailureBuilder {
private Throwable reason;
@Nullable private Integer status;
@Nullable private String index;
@Nullable private Integer shardId;
@Nullable private String nodeId;

private SearchFailureBuilder() {}

public SearchFailureBuilder withReason(Throwable reason) {
this.reason = reason;
return this;
}

public SearchFailureBuilder withStatus(Integer status) {
this.status = status;
return this;
}

public SearchFailureBuilder withIndex(String index) {
this.index = index;
return this;
}

public SearchFailureBuilder withShardId(Integer shardId) {
this.shardId = shardId;
return this;
}

public SearchFailureBuilder withNodeId(String nodeId) {
this.nodeId = nodeId;
return this;
}

public SearchFailure build() {
return new SearchFailure(reason, status, index, shardId, nodeId);
}
}

}

public static final class ByQueryResponseBuilder {
private long took;
private boolean timedOut;
Expand All @@ -344,6 +469,7 @@ public static final class ByQueryResponseBuilder {
private long searchRetries;
@Nullable private String reasonCancelled;
private List<Failure> failures = Collections.emptyList();
private List<SearchFailure> searchFailures = Collections.emptyList();

private ByQueryResponseBuilder() {}

Expand Down Expand Up @@ -407,9 +533,14 @@ public ByQueryResponseBuilder withFailures(List<Failure> failures) {
return this;
}

public ByQueryResponseBuilder withSearchFailure(List<SearchFailure> searchFailures) {
this.searchFailures = searchFailures;
return this;
}

public ByQueryResponse build() {
return new ByQueryResponse(took, timedOut, total, updated, deleted, batches, versionConflicts, noops, bulkRetries,
searchRetries, reasonCancelled, failures);
searchRetries, reasonCancelled, failures, searchFailures);
}
}
}