package org.elasticsearch.plugin.nlpcn; import org.elasticsearch.search.SearchHit; import org.elasticsearch.search.aggregations.Aggregation; import org.elasticsearch.search.aggregations.Aggregations; import org.elasticsearch.search.aggregations.bucket.MultiBucketsAggregation; import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.Map; /** * Created by Eliran on 3/10/2015. */ public class ElasticResultHandler { public static Object getFieldValue(SearchHit hit,String field){ return deepSearchInMap(hit.sourceAsMap(),field); } private static Object deepSearchInMap(Map<String, Object> fieldsMap, String name) { if(name.contains(".")){ String[] path = name.split("\\."); Map<String,Object> currentObject = fieldsMap; for(int i=0;i<path.length-1 ;i++){ Object valueFromCurrentMap = currentObject.get(path[i]); if(valueFromCurrentMap == null) return null; if(!Map.class.isAssignableFrom(valueFromCurrentMap.getClass())) return null; currentObject = (Map<String, Object>) valueFromCurrentMap; } return currentObject.get(path[path.length-1]); } return fieldsMap.get(name); } }