diff --git a/jest-common/src/main/java/io/searchbox/client/JestResult.java b/jest-common/src/main/java/io/searchbox/client/JestResult.java index 8133145a8..7145fcab8 100644 --- a/jest-common/src/main/java/io/searchbox/client/JestResult.java +++ b/jest-common/src/main/java/io/searchbox/client/JestResult.java @@ -158,6 +158,10 @@ protected List extractSource() { } } } else if (obj != null) { + JsonElement objId = jsonObject.get("_id"); + if ((objId != null) && obj.isJsonObject()) { + obj.getAsJsonObject().add(ES_METADATA_ID, objId); + } sourceList.add(obj); } } diff --git a/jest-common/src/test/java/io/searchbox/client/JestResultTest.java b/jest-common/src/test/java/io/searchbox/client/JestResultTest.java index 203ec34b1..19c0a0af4 100644 --- a/jest-common/src/test/java/io/searchbox/client/JestResultTest.java +++ b/jest-common/src/test/java/io/searchbox/client/JestResultTest.java @@ -38,6 +38,7 @@ public void extractGetResource() { expectedResultMap.put("user", "kimchy"); expectedResultMap.put("postDate", "2009-11-15T14:12:12"); expectedResultMap.put("message", "trying out Elastic Search"); + expectedResultMap.put(JestResult.ES_METADATA_ID, "1"); JsonObject actualResultMap = result.extractSource().get(0).getAsJsonObject(); assertEquals(expectedResultMap.size(), actualResultMap.entrySet().size()); for (String key : expectedResultMap.keySet()) { @@ -68,6 +69,31 @@ public void extractGetResourceWithLongId() { assertEquals(new Long(Integer.MAX_VALUE + 10l), actual.getSomeIdName()); } + + @Test + public void extractGetResourceWithLongIdNotInSource() { + Long actualId = Integer.MAX_VALUE + 10l; + + String response = "{\n" + + " \"_index\" : \"blog\",\n" + + " \"_type\" : \"comment\",\n" + + " \"_id\" : \"" + actualId.toString() + "\", \n" + + " \"_source\" : {\n" + + " \"message\" : \"trying out Elastic Search\"\n" + + " }\n" + + "}\n"; + result.setJsonMap(new Gson().fromJson(response, Map.class)); + result.setPathToResult("_source"); + result.setSucceeded(true); + + Comment actual = result.getSourceAsObject(Comment.class); + assertNotNull(actual); + + assertEquals(new Long(Integer.MAX_VALUE + 10l), actual.getSomeIdName()); + } + + + @Test public void extractUnFoundGetResource() { String response = "{\"_index\":\"twitter\",\"_type\":\"tweet\",\"_id\":\"13333\",\"exists\":false}";