You must flush the BulkProcessor and wait until your code has received all
responses from outstanding requests. The close() method in BulkProcessor
performs a flush - and recently an explicit flush() is also implemented -

https://github.com/elasticsearch/elasticsearch/issues/5570

but BulkProcessor does not wait for all responses. If you close your client
prematurely, you will see "no node available" or other things.

Since a "flush" is also executed on a periodical interval, you can either
simply wait in your code for an estimated time so all the bulk requests
should be processed (which assumes the client is up for a long time after
BulkProcessor close), or you can write a BulkProcessor wrapper that is
maintaining a counter on the listener calls of "beforeBulk"/"afterBulk"
listener methods so you know when all responses have been received.

I wrote an improved BulkProcessor which provides a "waitForResponses"
method:

https://github.com/jprante/elasticsearch-support/blob/master/src/main/java/org/xbib/elasticsearch/action/ingest/IngestProcessor.java

Jörg


On Wed, Apr 23, 2014 at 12:01 AM, IronMan2014 <[email protected]> wrote:

> Ok, so how do I close the client? I have something like this?
>
> main(){
>
> MyIndexer indexer();
>
> for (doc=0; doc <n; doc ++)
>   indexer.pushDocumentToBulk(doc);
>
>  indexer.Shutdown();
>
> }
>
> class MyIndexer(){
>
> //create client
>
> // MyBulkProcesor myBulk;
>
> //PushDocumentToBulk(Doc)
>
> void ShutDown(){
>  myBulk.Close();
>  //client.close() ; //This creates No node available exception here, my
> guess bulk is still processing ?
> }
>
> }
>
> class MyBulkProcessor(){
>
> BlulkProcessor bulk;
>
> @BeforeBulk ...
> @AfterBulk ....
>
> PushDocumentToBulk() { ..push doc ..}
> void Close(){ bulk.close(); }
> }
>
>
>
> On Tuesday, April 22, 2014 5:42:23 PM UTC-4, Jörg Prante wrote:
>
>> No, BulkProcessor does not close the client.
>>
>> Jörg
>>
>>
>> On Tue, Apr 22, 2014 at 11:03 PM, IronMan2014 <[email protected]> wrote:
>>
>>> bulkProcessor.close();
>>>
>>> Does this also close the transportClient? When I follow up the above
>>> line with client.close(), I get no available exception.
>>>
>>> --
>>> You received this message because you are subscribed to the Google
>>> Groups "elasticsearch" group.
>>> To unsubscribe from this group and stop receiving emails from it, send
>>> an email to [email protected].
>>>
>>> To view this discussion on the web visit https://groups.google.com/d/
>>> msgid/elasticsearch/a923766f-1f70-4e78-8b0f-f443e16a2cd7%
>>> 40googlegroups.com<https://groups.google.com/d/msgid/elasticsearch/a923766f-1f70-4e78-8b0f-f443e16a2cd7%40googlegroups.com?utm_medium=email&utm_source=footer>
>>> .
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>>
>>  --
> You received this message because you are subscribed to the Google Groups
> "elasticsearch" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/elasticsearch/018765f1-b97f-4fbb-a2ae-794a0283d752%40googlegroups.com<https://groups.google.com/d/msgid/elasticsearch/018765f1-b97f-4fbb-a2ae-794a0283d752%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
>
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups 
"elasticsearch" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/elasticsearch/CAKdsXoFXCV23bzyz%2BQ3mgS_LM86K4fCJ7WGY1YKL%3DbWVJ_PEyg%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to