Index API
editIndex API
editIndex Request
editAn IndexRequest
requires the following arguments:
Providing the document source
editThe document source can be provided in different ways:
Map<String, Object> jsonMap = new HashMap<>(); jsonMap.put("user", "kimchy"); jsonMap.put("postDate", new Date()); jsonMap.put("message", "trying out Elasticsearch"); IndexRequest indexRequest = new IndexRequest("posts", "doc", "1") .source(jsonMap);
XContentBuilder builder = XContentFactory.jsonBuilder(); builder.startObject(); { builder.field("user", "kimchy"); builder.field("postDate", new Date()); builder.field("message", "trying out Elasticsearch"); } builder.endObject(); IndexRequest indexRequest = new IndexRequest("posts", "doc", "1") .source(builder);
Document source provided as an |
Optional arguments
editThe following arguments can optionally be provided:
Timeout to wait for primary shard to become available as a |
|
Timeout to wait for primary shard to become available as a |
request.setRefreshPolicy(WriteRequest.RefreshPolicy.WAIT_UNTIL); request.setRefreshPolicy("wait_for");
Operation type provided as an |
|
Operation type provided as a |
Synchronous Execution
editIndexResponse indexResponse = client.index(request);
Asynchronous Execution
editIndex Response
editThe returned IndexResponse
allows to retrieve information about the executed
operation as follows:
String index = indexResponse.getIndex(); String type = indexResponse.getType(); String id = indexResponse.getId(); long version = indexResponse.getVersion(); if (indexResponse.getResult() == DocWriteResponse.Result.CREATED) { } else if (indexResponse.getResult() == DocWriteResponse.Result.UPDATED) { } ReplicationResponse.ShardInfo shardInfo = indexResponse.getShardInfo(); if (shardInfo.getTotal() != shardInfo.getSuccessful()) { } if (shardInfo.getFailed() > 0) { for (ReplicationResponse.ShardInfo.Failure failure : shardInfo.getFailures()) { String reason = failure.reason(); } }
Handle (if needed) the case where the document was created for the first time |
|
Handle (if needed) the case where the document was rewritten as it was already existing |
|
Handle the situation where number of successful shards is less than total shards |
|
Handle the potential failures |
If there is a version conflict, an ElasticsearchException
will
be thrown:
IndexRequest request = new IndexRequest("posts", "doc", "1") .source("field", "value") .version(1); try { IndexResponse response = client.index(request); } catch(ElasticsearchException e) { if (e.status() == RestStatus.CONFLICT) { } }
Same will happen in case opType
was set to create
and a document with
same index, type and id already existed: