package io.searchbox.search.aggregation;
import static org.junit.Assert.*;
import java.util.List;
import org.junit.Test;
import com.google.gson.Gson;
import com.google.gson.JsonParser;
import io.searchbox.core.SearchResult;
import io.searchbox.core.search.aggregation.TermsAggregation;
import io.searchbox.core.search.aggregation.TermsAggregation.Entry;
import io.searchbox.core.search.aggregation.TopHitsAggregation;
public class TopHitsAggregationTest {
String json = "{\n" +
" \"_shards\":{\n" +
" \"total\" : 5,\n" +
" \"successful\" : 5,\n" +
" \"failed\" : 0\n" +
" },\n" +
" \"hits\":{\n" +
" \"total\" : 1,\n" +
" \"hits\": []\n" +
" },\n" +
" \"aggregations\": {\n" +
" \"test\": {\n" +
" \"doc_count_error_upper_bound\": 1,\n" +
" \"sum_other_doc_count\": 2,\n" +
" \"buckets\": [\n" +
" {\n" +
" \"key\": \"keyTest1\",\n" +
" \"doc_count\": 2,\n" +
" \"top_hits_test\": {\n" +
" \"hits\": {\n" +
" \"total\": 2,\n" +
" \"max_score\": 1.22222,\n" +
" \"hits\": [\n" +
" {\n" +
" \"_index\": \"indexName\",\n" +
" \"_type\": \"typeName\",\n" +
" \"_id\": \"testId1\",\n" +
" \"_score\": 1.11111,\n" +
" \"_source\": {\n" +
" \"field1\": \"field1Content\"\n" +
" }\n" +
" },\n" +
" {\n" +
" \"_index\": \"indexName\",\n" +
" \"_type\": \"typeName\",\n" +
" \"_id\": \"testId2\",\n" +
" \"_score\": 1.0000,\n" +
" \"_source\": {\n" +
" \"field1\": \"field2Content\"\n" +
" }\n" +
" }\n" +
" ]\n" +
" }\n" +
" }\n" +
" },\n" +
" {\n" +
" \"key\": \"keyTest2\",\n" +
" \"doc_count\": 2,\n" +
" \"top_hits_test\": {\n" +
" \"hits\": {\n" +
" \"total\": 2,\n" +
" \"max_score\": 1.22222,\n" +
" \"hits\": [\n" +
" {\n" +
" \"_index\": \"indexName\",\n" +
" \"_type\": \"typeName\",\n" +
" \"_id\": \"testId21\",\n" +
" \"_score\": 1.11111,\n" +
" \"_source\": {\n" +
" \"field1\": \"field21Content\"\n" +
" }\n" +
" },\n" +
" {\n" +
" \"_index\": \"indexName\",\n" +
" \"_type\": \"typeName\",\n" +
" \"_id\": \"testId22\",\n" +
" \"_score\": 1.0000,\n" +
" \"_source\": {\n" +
" \"field1\": \"field22Content\"\n" +
" }\n" +
" }\n" +
" ]\n" +
" }\n" +
" }\n" +
" }\n" +
" ]\n" +
" }\n" +
" }\n" +
"}";
@Test
public void testGetMaxScoreWhenMissing() {
SearchResult searchResult = new SearchResult(new Gson());
searchResult.setSucceeded(true);
searchResult.setJsonString(json);
searchResult.setJsonObject(new JsonParser().parse(json).getAsJsonObject());
searchResult.setPathToResult("hits/hits/_source");
Float maxScore = searchResult.getMaxScore();
assertNull(maxScore);
TermsAggregation termsAgg = searchResult.getAggregations().getTermsAggregation("test");
assertEquals(new Long(1), termsAgg.getDocCountErrorUpperBound());
assertEquals(new Long(2), termsAgg.getSumOtherDocCount());
List<Entry> termBuckets = termsAgg.getBuckets();
for (Entry entry : termBuckets) {
TopHitsAggregation topHitAgg = entry.getTopHitsAggregation("top_hits_test");
List<String> hits = topHitAgg.getSourceAsStringList();
assertEquals(2, hits.size());
}
}
}