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

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

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

    https://github.com/apache/nifi/pull/255#discussion_r67496113
  
    --- Diff: 
nifi-nar-bundles/nifi-elasticsearch-bundle/nifi-elasticsearch-processors/src/main/java/org/apache/nifi/processors/elasticsearch/PutElasticsearch.java
 ---
    @@ -178,8 +190,20 @@ public void onTrigger(final ProcessContext context, 
final ProcessSession session
                             public void process(final InputStream in) throws 
IOException {
                                 String json = IOUtils.toString(in, charset)
                                         .replace("\r\n", " ").replace('\n', ' 
').replace('\r', ' ');
    -                            bulk.add(esClient.get().prepareIndex(index, 
docType, id)
    -                                    .setSource(json.getBytes(charset)));
    +
    +                            if (indexOp.equalsIgnoreCase("index")) {
    +                                
bulk.add(esClient.get().prepareIndex(index, docType, id)
    +                                        
.setSource(json.getBytes(charset)));
    +                            } else if (indexOp.equalsIgnoreCase("upsert")) 
{
    --- End diff --
    
    The difference is about how ES will handle it.
    
    See 
https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-update.html#upserts.
 "The update API also support passing a partial document, which will be merged 
into the existing document .... instead of sending a partial doc plus an upsert 
doc, setting doc_as_upsert to true will use the contents of doc as the upsert 
value".
    
    You will see the difference when you upsert two or more documents like this:
    
    first time upserting: doc1 `{ "prop1": [...] }`
    
    second time upserting: doc1 `{ "prop2": [...]}`
    
    And the final doc1 should be: { "prop1": [...],  "prop2": [...]}



> Add option to bulk using Index or Update to PutElasticsearch
> ------------------------------------------------------------
>
>                 Key: NIFI-1594
>                 URL: https://issues.apache.org/jira/browse/NIFI-1594
>             Project: Apache NiFi
>          Issue Type: Improvement
>          Components: Extensions
>            Reporter: João Henrique Ferreira de Freitas
>            Priority: Minor
>             Fix For: 1.0.0, 0.7.0
>
>
> I have a use case where two flowfiles needs to be write using 
> PutElasticsearch. Both will write to the same document but in different 
> properties. 
> The proposal is to let the user choice if an Update operation or Index is 
> needed.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to