Please, see my comments inline.
> On 6 Feb 2020, at 10:50, Etienne Chauchot <[email protected]> wrote:
>>>> 1. regarding version support: ES v2 is no more maintained by Elastic since
>>>> 2018/02 so we plan to remove it from the IO. In the past we already
>>>> retired versions (like spark 1.6 for instance).
>>
>>
>> My only concern here is that there might be users who use the existing
>> module who might not be able to easily upgrade the Beam version if we remove
>> it. But given that V2 is 5 versions behind the latest release this might be
>> OK.
>>
>> It seems we have a consensus on this.
>> I think there should be another general discussion on the long term support
>> of our prefered tool IO modules.
> => yes, consensus, let's drop ESV2
>
We had (and still have) a similar problem with KafkaIO to support different
versions of Kafka, especially very old version 0.9. We raised this question on
user@ and it appears that there are users who for some reasons still use old
Kafka versions. So, before dropping a support of any ES versions, I’d suggest
to ask it user@ and see if any people will be affected by this.
>>>> 2. regarding the user: the aim is to unlock some new features (listed by
>>>> Ludovic) and give the user more flexibility on his request. For that, it
>>>> requires to use high level java ES client in place of the low level REST
>>>> client (that was used because it is the only one compatible with all ES
>>>> versions). We plan to replace the API (json document in and out) by more
>>>> complete standard ES objects that contain de request logic (insert/update,
>>>> doc routing etc...) and the data. There are already IOs like SpannerIO
>>>> that use similar objects in input PCollection rather than pure POJOs.
>>
>>
>> Won't this be a breaking change for all users ? IMO using POJOs in
>> PCollections is safer since we have to worry about changes to the underlying
>> client library API. Exception would be when underlying client library offers
>> a backwards compatibility guarantee that we can rely on for the foreseeable
>> future (for example, BQ TableRow).
>>
>> Agreed but actually, there will be POJOs in order to abstract
>> Elasticsearch's version support. The following third point explains this.
> => indeed it will be a breaking change, hence this email to get a consensus
> on that. Also I think our wrappers of ES request objects will offer a
> backward compatible as the underlying objects
>
I just want to remind that according to what we agreed some time ago on dev@
(at least, for IOs), all breaking user API changes have to be added along with
deprecation of old API that could be removed after 3 consecutive Beam releases.
In this case, users will have a time to move to new API smoothly.