elastic / elastic/elasticsearch-java
forcemerge with wait_for_completion=false lead to response error: MissingRequiredPropertyException: Missing required property 'ForcemergeResponse.shards'
- Dominant language
- Java
- Stars
- 524
- Forks
- 300
- Avg merge
- 1d 11h
- Merged PRs (30d)
- 16
Description
### Java API client version
8.5.2
### Java version
1.8
### Elasticsearch Version
8.5.0
### Problem description
```
ForcemergeResponse forcemergeResp = client.indices().forcemerge(r ->
r.index(curIndex).maxNumSegments(maxSegment).waitForCompletion(false));
```
when use the code above to force merge segments without waiting, the response will fail because of mandatory response property check, and we got such error response
```
co.elastic.clients.util.MissingRequiredPropertyException: Missing required property 'ForcemergeResponse.shards'
at co.elastic.clients.util.ApiTypeHelper.requireNonNull(ApiTypeHelper.java:76)
at co.elastic.clients.elasticsearch._types.ShardsOperationResponseBase.(ShardsOperationResponseBase.java:57)
at co.elastic.clients.elasticsearch.indices.forcemerge.ForceMergeResponseBody.(ForceMergeResponseBody.java:55)
at co.elastic.clients.elasticsearch.indices.ForcemergeResponse.(ForcemergeResponse.java:48)
at co.elastic.clients.elasticsearch.indices.ForcemergeResponse.(ForcemergeResponse.java:44)
at co.elastic.clients.elasticsearch.indices.ForcemergeResponse$Builder.build(ForcemergeResponse.java:79)
at co.elastic.clients.elasticsearch.indices.ForcemergeResponse$Builder.build(ForcemergeResponse.java:62)
at co.elastic.clients.json.ObjectBuilderDeserializer.deserialize(ObjectBuilderDeserializer.java:80)
at co.elastic.clients.json.DelegatingDeserializer$SameType.deserialize(DelegatingDeserializer.java:43)
at co.elastic.clients.transport.rest_client.RestClientTransport.decodeResponse(RestClientTransport.java:325)
at co.elastic.clients.transport.rest_client.RestClientTransport.getHighLevelResponse(RestClientTransport.java:295)
at co.elastic.clients.transport.rest_client.RestClientTransport.performRequest(RestClientTransport.java:148)
at co.elastic.clients.elasticsearch.indices.ElasticsearchIndicesClient.forcemerge(ElasticsearchIndicesClient.java:836)
at co.elastic.clients.elasticsearch.indices.ElasticsearchIndicesClient.forcemerge(ElasticsearchIndicesClient.java:852)
```
the request url looks like `/_forcemerge?wait_for_completion=false&max_num_segments=1`
and the repsonse will be like
```json
{
"completed": false,
"task": {
"node": "PM0rlfWdQiiTjjmVzHgs-A",
"id": 2726788,
"type": "transport",
"action": "indices:admin/forcemerge",
"description": "Force-merge indices [dw_mobdb_dim_tripshoot_embedding_for_search-20221221151817], maxSegments[1], onlyExpungeDeletes[false], flush[true]",
"start_time_in_millis": 1671612028318,
"running_time_in_nanos": 147222061523,
"cancellable": false,
"headers": {}
}
}
```
there is no _shards property if task is not completed.
Contributor guide
Assessment
This issue has not been assessed yet.