diff --git a/elasticsearch5/src/main/java/com/yahoo/ycsb/db/elasticsearch5/ElasticsearchClient.java b/elasticsearch5/src/main/java/com/yahoo/ycsb/db/elasticsearch5/ElasticsearchClient.java index eb305c8d6baeab10fec43d8a4909d2aee0602832..a34dc0a26a1d57b4f84ba9a8c53929782c2a572e 100644 --- a/elasticsearch5/src/main/java/com/yahoo/ycsb/db/elasticsearch5/ElasticsearchClient.java +++ b/elasticsearch5/src/main/java/com/yahoo/ycsb/db/elasticsearch5/ElasticsearchClient.java @@ -1,4 +1,4 @@ -/** +/* * Copyright (c) 2017 YCSB contributors. All rights reserved. * <p> * Licensed under the Apache License, Version 2.0 (the "License"); you @@ -174,7 +174,7 @@ public class ElasticsearchClient extends DB { @Override public Status delete(final String table, final String key) { try { - final SearchResponse searchResponse = search(key); + final SearchResponse searchResponse = search(table, key); if (searchResponse.getHits().totalHits == 0) { return Status.NOT_FOUND; } @@ -200,19 +200,22 @@ public class ElasticsearchClient extends DB { final Set<String> fields, final Map<String, ByteIterator> result) { try { - final SearchResponse searchResponse = search(key); + final SearchResponse searchResponse = search(table, key); if (searchResponse.getHits().totalHits == 0) { return Status.NOT_FOUND; } final SearchHit hit = searchResponse.getHits().getAt(0); if (fields != null) { - for (String field : fields) { + for (final String field : fields) { result.put(field, new StringByteIterator( (String) hit.getField(field).getValue())); } } else { for (final Map.Entry<String, SearchHitField> e : hit.getFields().entrySet()) { + if ("key".equals(e.getKey())) { + continue; + } result.put(e.getKey(), new StringByteIterator((String) e.getValue().getValue())); } } @@ -227,7 +230,7 @@ public class ElasticsearchClient extends DB { @Override public Status update(final String table, final String key, final Map<String, ByteIterator> values) { try { - final SearchResponse response = search(key); + final SearchResponse response = search(table, key); if (response.getHits().totalHits == 0) { return Status.NOT_FOUND; } @@ -237,7 +240,7 @@ public class ElasticsearchClient extends DB { hit.getSource().put(entry.getKey(), entry.getValue()); } - client.prepareIndex(indexKey, table, key).setSource(hit.getSource()).get(); + client.prepareIndex(indexKey, table, hit.getId()).setSource(hit.getSource()).get(); return Status.OK; @@ -268,6 +271,9 @@ public class ElasticsearchClient extends DB { } else { entry = new HashMap<>(hit.getFields().size()); for (final Map.Entry<String, SearchHitField> field : hit.getFields().entrySet()) { + if ("key".equals(field.getKey())) { + continue; + } entry.put(field.getKey(), new StringByteIterator((String) field.getValue().getValue())); } } @@ -281,8 +287,8 @@ public class ElasticsearchClient extends DB { } - private SearchResponse search(final String key) { - return client.prepareSearch(indexKey).setQuery(new TermQueryBuilder("key", key)).get(); + private SearchResponse search(final String table, final String key) { + return client.prepareSearch(indexKey).setTypes(table).setQuery(new TermQueryBuilder("key", key)).get(); } }