elastic / elasticsearch-java

Official Elasticsearch Java Client
Apache License 2.0
11 stars 243 forks source link

Missing required property 'MultiTermVectorsOperation.doc' #333

Open jerryguowei opened 2 years ago

jerryguowei commented 2 years ago

Java API client version

7.17.5

Java version

11

Elasticsearch Version

7.17.5

Problem description

I got the error exceptions

Missing required property 'MultiTermVectorsOperation.doc'
co.elastic.clients.util.MissingRequiredPropertyException: Missing required property 'MultiTermVectorsOperation.doc'
    at co.elastic.clients.util.ApiTypeHelper.requireNonNull(ApiTypeHelper.java:76)
    at co.elastic.clients.elasticsearch.core.mtermvectors.MultiTermVectorsOperation.<init>(MultiTermVectorsOperation.java:88)
    at co.elastic.clients.elasticsearch.core.mtermvectors.MultiTermVectorsOperation.<init>(MultiTermVectorsOperation.java:57)
    at co.elastic.clients.elasticsearch.core.mtermvectors.MultiTermVectorsOperation$Builder.build(MultiTermVectorsOperation.java:435)

I checked the elastic official docs, only the id, fields,index are mandatory, but in version 7.17.5, a lot of other fields in the this class are mandatory. BTW, the code for version 8 is correct.

jerryguowei commented 2 years ago

Is there any plan to fix this bugs in 7.17? 7.17 is the last version of 7. And I believe most users still need to upgrade to 7.17, then to 8. which is also recommended by elastic https://www.elastic.co/guide/en/elastic-stack/current/upgrading-elastic-stack.html#prepare-to-upgrade.

I know this bug not exist in version 8, but still prevent users to use 7.17. And MultiTermVectorsOperation is an important operation in elasticSearch.

jerryguowei commented 2 years ago

For the same API, the response MultiTermVectorsResult also have issues in version 7.17.6. we got the error when deserialize the response Missing required property for MultiTermVectorsResult.id

Look at the code in 7.17, we can find that the property name in the Deserializer is not correct. The correct property name is _id, _index, and _version

this api is completely not working at version 7.17 because of this wrong naming in the Deserializer

https://github.com/elastic/elasticsearch-java/blob/7.17/java-client/src/main/java/co/elastic/clients/elasticsearch/core/mtermvectors/MultiTermVectorsResult.java#L291-L292

The code for version 8 is also correct.