Github user tzulitai commented on a diff in the pull request:

    https://github.com/apache/flink/pull/6043#discussion_r190127406
  
    --- Diff: 
flink-connectors/flink-connector-elasticsearch-base/src/main/java/org/apache/flink/streaming/connectors/elasticsearch/RequestIndexer.java
 ---
    @@ -21,18 +21,56 @@
     import org.apache.flink.annotation.PublicEvolving;
     
     import org.elasticsearch.action.ActionRequest;
    +import org.elasticsearch.action.delete.DeleteRequest;
    +import org.elasticsearch.action.index.IndexRequest;
    +import org.elasticsearch.action.update.UpdateRequest;
     
     /**
    - * Users add multiple {@link ActionRequest ActionRequests} to a {@link 
RequestIndexer} to prepare
    + * Users add multiple delete, index or update requests to a {@link 
RequestIndexer} to prepare
      * them for sending to an Elasticsearch cluster.
      */
     @PublicEvolving
    -public interface RequestIndexer {
    +public abstract class RequestIndexer {
     
        /**
         * Add multiple {@link ActionRequest} to the indexer to prepare for 
sending requests to Elasticsearch.
         *
         * @param actionRequests The multiple {@link ActionRequest} to add.
    +    * @deprecated use the {@link DeleteRequest}, {@link IndexRequest} or 
{@Up}
         */
    -   void add(ActionRequest... actionRequests);
    +   @Deprecated
    +   public void add(ActionRequest... actionRequests) {
    +           for (ActionRequest actionRequest : actionRequests) {
    +                   if (actionRequest instanceof IndexRequest) {
    +                           add((IndexRequest) actionRequest);
    +                   } else if (actionRequest instanceof DeleteRequest) {
    +                           add((DeleteRequest) actionRequest);
    +                   } else if (actionRequest instanceof UpdateRequest) {
    +                           add((UpdateRequest) actionRequest);
    +                   } else {
    +                           throw new 
IllegalArgumentException("RequestIndexer only supports Index, Delete and Update 
requests");
    +                   }
    +           }
    +   }
    +
    +   /**
    +    * Add multiple {@link DeleteRequest} to the indexer to prepare for 
sending requests to Elasticsearch.
    +    *
    +    * @param deleteRequests The multiple {@link DeleteRequest} to add.
    +    */
    +   public abstract void add(DeleteRequest... deleteRequests);
    --- End diff --
    
    What would be your feeling on not exposing `DeleteRequest`, `IndexRequest`, 
`UpdateRequest` directly through user API?
    
    We could maintain our own way to specify requests, and only create the 
actual ES request instances internally.
    It would be more maintenance work for us, but might be safer from a 
future-proof API perspective.


---

Reply via email to