diff --git a/elasticsearch/src/main/java/com/yahoo/ycsb/db/ElasticsearchClient.java b/elasticsearch/src/main/java/com/yahoo/ycsb/db/ElasticsearchClient.java index 3c0762cd097a3b1cd913515773be9cfc4131c943..6a95d9cefc64c905ebd7d3a6b2c559bf20e5b2f6 100644 --- a/elasticsearch/src/main/java/com/yahoo/ycsb/db/ElasticsearchClient.java +++ b/elasticsearch/src/main/java/com/yahoo/ycsb/db/ElasticsearchClient.java @@ -30,6 +30,7 @@ import com.yahoo.ycsb.StringByteIterator; import org.elasticsearch.action.admin.cluster.health.ClusterHealthRequest; import org.elasticsearch.action.admin.indices.create.CreateIndexRequest; +import org.elasticsearch.action.delete.DeleteResponse; import org.elasticsearch.action.get.GetResponse; import org.elasticsearch.action.search.SearchResponse; import org.elasticsearch.client.Client; @@ -185,8 +186,7 @@ public class ElasticsearchClient extends DB { * description for a discussion of error codes. */ @Override - public Status insert(String table, String key, - HashMap<String, ByteIterator> values) { + public Status insert(String table, String key, HashMap<String, ByteIterator> values) { try { final XContentBuilder doc = jsonBuilder().startObject(); @@ -201,8 +201,8 @@ public class ElasticsearchClient extends DB { return Status.OK; } catch (Exception e) { e.printStackTrace(); + return Status.ERROR; } - return Status.ERROR; } /** @@ -218,12 +218,16 @@ public class ElasticsearchClient extends DB { @Override public Status delete(String table, String key) { try { - client.prepareDelete(indexKey, table, key).execute().actionGet(); - return Status.OK; + DeleteResponse response = client.prepareDelete(indexKey, table, key).execute().actionGet(); + if (response.isFound()) { + return Status.OK; + } else { + return Status.NOT_FOUND; + } } catch (Exception e) { e.printStackTrace(); + return Status.ERROR; } - return Status.ERROR; } /** @@ -241,8 +245,7 @@ public class ElasticsearchClient extends DB { * @return Zero on success, a non-zero error code on error or "not found". */ @Override - public Status read(String table, String key, Set<String> fields, - HashMap<String, ByteIterator> result) { + public Status read(String table, String key, Set<String> fields, HashMap<String, ByteIterator> result) { try { final GetResponse response = client.prepareGet(indexKey, table, key).execute().actionGet(); @@ -259,11 +262,13 @@ public class ElasticsearchClient extends DB { } } return Status.OK; + } else { + return Status.NOT_FOUND; } } catch (Exception e) { e.printStackTrace(); + return Status.ERROR; } - return Status.ERROR; } /** @@ -281,8 +286,7 @@ public class ElasticsearchClient extends DB { * description for a discussion of error codes. */ @Override - public Status update(String table, String key, - HashMap<String, ByteIterator> values) { + public Status update(String table, String key, HashMap<String, ByteIterator> values) { try { final GetResponse response = client.prepareGet(indexKey, table, key).execute().actionGet(); @@ -294,12 +298,13 @@ public class ElasticsearchClient extends DB { client.prepareIndex(indexKey, table, key).setSource(response.getSource()).execute().actionGet(); return Status.OK; + } else { + return Status.NOT_FOUND; } - } catch (Exception e) { e.printStackTrace(); + return Status.ERROR; } - return Status.ERROR; } /** @@ -321,8 +326,12 @@ public class ElasticsearchClient extends DB { * description for a discussion of error codes. */ @Override - public Status scan(String table, String startkey, int recordcount, - Set<String> fields, Vector<HashMap<String, ByteIterator>> result) { + public Status scan( + String table, + String startkey, + int recordcount, + Set<String> fields, + Vector<HashMap<String, ByteIterator>> result) { try { final RangeQueryBuilder rangeQuery = rangeQuery("_id").gte(startkey); final SearchResponse response = client.prepareSearch(indexKey) @@ -336,18 +345,16 @@ public class ElasticsearchClient extends DB { for (SearchHit hit : response.getHits()) { entry = new HashMap<>(fields.size()); - for (String field : fields) { entry.put(field, new StringByteIterator((String) hit.getSource().get(field))); } - result.add(entry); } return Status.OK; } catch (Exception e) { e.printStackTrace(); + return Status.ERROR; } - return Status.ERROR; } }