[ 
https://issues.apache.org/jira/browse/NIFI-4625?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16327214#comment-16327214
 ] 

ASF GitHub Bot commented on NIFI-4625:
--------------------------------------

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

    https://github.com/apache/nifi/pull/2287#discussion_r161784589
  
    --- Diff: 
nifi-nar-bundles/nifi-elasticsearch-bundle/nifi-elasticsearch-5-processors/src/main/java/org/apache/nifi/processors/elasticsearch/PutElasticsearch5.java
 ---
    @@ -212,18 +224,38 @@ public void process(final InputStream in) throws 
IOException {
                                 String json = IOUtils.toString(in, charset)
                                         .replace("\r\n", " ").replace('\n', ' 
').replace('\r', ' ');
     
    -                            if (indexOp.equalsIgnoreCase("index")) {
    -                                
bulk.add(esClient.get().prepareIndex(index, docType, id)
    -                                        
.setSource(json.getBytes(charset)));
    -                            } else if (indexOp.equalsIgnoreCase("upsert")) 
{
    -                                
bulk.add(esClient.get().prepareUpdate(index, docType, id)
    -                                        .setDoc(json.getBytes(charset))
    -                                        .setDocAsUpsert(true));
    -                            } else if (indexOp.equalsIgnoreCase("update")) 
{
    -                                
bulk.add(esClient.get().prepareUpdate(index, docType, id)
    -                                        .setDoc(json.getBytes(charset)));
    -                            } else {
    -                                throw new IOException("Index operation: " 
+ indexOp + " not supported.");
    +                            switch(indexOp.toLowerCase()) {
    +                                                           case "index": {
    +                                                                   if 
(version != null) {
    +                                                                           
bulk.add(esClient.get().prepareIndex(index, docType, id)
    +                                                                           
                .setVersion(version).setVersionType(VersionType.EXTERNAL)
    --- End diff --
    
    What happens when version is null (i.e. the property is left blank or the 
Expression resolves to nothing)? Should we only call setVersion() and 
setVersionType() if version != null? That would ensure that the default 
(internal) versioning is used unless otherwise provided here.


> Add External Versioning to PutElasticSearch5 Processor
> ------------------------------------------------------
>
>                 Key: NIFI-4625
>                 URL: https://issues.apache.org/jira/browse/NIFI-4625
>             Project: Apache NiFi
>          Issue Type: Improvement
>          Components: Core Framework
>    Affects Versions: 1.3.0
>         Environment: All
>            Reporter: Pedro Gomes
>            Assignee: Pedro Gomes
>            Priority: Major
>              Labels: elasticsearch, processor
>   Original Estimate: 48h
>  Remaining Estimate: 48h
>
> Currently the PutElasticSearch5 processor does not support external 
> versioning.
> The idea would be to add a property that follows the same logic as the Id 
> property, and allows index documents with an externally controlled version.
> I've changed the code already and added some tests. Right now the changes 
> proposed are:
> - Add a new property Version in the processor block.
> - Change the Index operation to support the versioning number and versioning 
> type = external
> - Check if the versioning is used with other operation types, fail if so.
> (Idea behind this is that the bulk api doest not support external versioning 
> for any other operation except Index)



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to