Well, I use the Java API and not the REST API. And while there is a lot
more code around this, here's the core of my bulk load process. I use the
BulkRequestBuilder (a new one for each set of bulk updates!) and not the
BulkProcessor because (a) this code was already written and works and (b)
it gives me some additional control. For instance, I can configure the
maximum error display so that, if I'm loading 1M documents but they all
fail with some stupid fault of mine, I can see the first 128 errors but not
get swamped with all 1 million since they are more than likely to be very
similar.
I first wrote this code for ES 0.19.4 and it has remained unchanged and
working perfectly up to and including ES 1.1.0:
BulkResponse bulkResponse = bulkRequest.execute().actionGet();
if (bulkResponse.hasFailures())
{
if (failedDocuments <= failedMsgLimit)
Sysprint.err.println("BULK WARN: Bulk load failues: "
+ bulkResponse.buildFailureMessage());
BulkItemResponse[] items = bulkResponse.getItems();
for (BulkItemResponse item : items)
{
if (item.isFailed())
{
/* Failure detected /
failedDocuments++;
incrementFailedOpType(item.getOpType());
if (failedDocuments <= failedMsgLimit)
{
Sysprint.err.println("BULK WARN: Bulk failure for "
+ item.getOpType() + ": " + item.getFailureMessage());
}
}
else
{
/ Success: Keep track of version numbers > 1 */
if (item.getVersion() > 1)
setVersionGtOne++;
}
}
}
If you are using python you can just use the python client
(elasticsearch-py) it will shield you from this. Just have a look at the
bulk and streaming_bulk helpers in the library.
Hope this helps,
Honza
On Apr 11, 2014 7:52 PM, axel@mozilla.com wrote:
Thanks for the response.
My code's in python on top of the rest api, I fail to map the java code
over :-/
Axel
On Friday, April 11, 2014 4:14:10 PM UTC+2, ax...@mozilla.com wrote:
Hi,
in my current code, I check "ok": true to see if all my inserts in a bulk
call succeeded.
Now, with 1.0, "ok" is gone. Is there a recommended way to check the
results of individual commands inside a bulk api call? Notably, inserts?
Preferably something that works both pre and post 1.0.
backs the lacking status responses up with 500 error codes. So basically
all my inserts fails.
I like the API, though.
RFE: the docs should talk about the return values of APIs, I basically had
to trial and error those.
Axel
Am Samstag, 12. April 2014 02:03:24 UTC+2 schrieb Honza Král:
Hi axel,
If you are using python you can just use the python client
(elasticsearch-py) it will shield you from this. Just have a look at the
bulk and streaming_bulk helpers in the library.
Hope this helps,
Honza
On Apr 11, 2014 7:52 PM, <ax...@mozilla.com <javascript:>> wrote:
Thanks for the response.
My code's in python on top of the rest api, I fail to map the java code
over :-/
Axel
On Friday, April 11, 2014 4:14:10 PM UTC+2, ax...@mozilla.com wrote:
Hi,
in my current code, I check "ok": true to see if all my inserts in a
bulk call succeeded.
Now, with 1.0, "ok" is gone. Is there a recommended way to check the
results of individual commands inside a bulk api call? Notably, inserts?
Preferably something that works both pre and post 1.0.
unfortunately there is no code in python to shield you from the
incompatibilities. There are, however, two releases of
elasticsearch-py - 04.X and 1.0X. Use 0.4.X with elasticsearch 0.90.*
and 1.0.X with elasticsearch 1.*. That should get you what you need.
RFE: the docs should talk about the return values of APIs, I basically had
to trial and error those.
Axel
Am Samstag, 12. April 2014 02:03:24 UTC+2 schrieb Honza Král:
Hi axel,
If you are using python you can just use the python client
(elasticsearch-py) it will shield you from this. Just have a look at the
bulk and streaming_bulk helpers in the library.
My code's in python on top of the rest api, I fail to map the java code
over :-/
Axel
On Friday, April 11, 2014 4:14:10 PM UTC+2, ax...@mozilla.com wrote:
Hi,
in my current code, I check "ok": true to see if all my inserts in a
bulk call succeeded.
Now, with 1.0, "ok" is gone. Is there a recommended way to check the
results of individual commands inside a bulk api call? Notably, inserts?
Preferably something that works both pre and post 1.0.
Thanks
Axel
--
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 elasticsearc...@googlegroups.com.
Apache, Apache Lucene, Apache Hadoop, Hadoop, HDFS and the yellow elephant
logo are trademarks of the
Apache Software Foundation
in the United States and/or other countries.