After some study of the various methods, I found that:
SearchHit.sourceAsMap() will give you access to data if no specific fields have been requested.SearchHit.getFields() will give you access to certain fields requested in your request using SearchResponse.addFieldDataField( String )
( ), Map String, Map:
Map<String,Object> contents = hit.sourceAsMap();
for ( String name : contents.keySet() )
{
Object value = contents.get(name);
System.out.println( "Hit field: "+name+ " object: "+value.getClass().getName() );
if ( contents.get(name) instanceof java.util.HashMap )
{
}
else
{
}
}
, , API SearchHit SearchHitField, .
SearchHitField :
Map<String,SearchHitField> fields = hit.getFields();
System.out.println( "Hit fields: "+fields.size() );
for ( SearchHitField field : fields.values() )
{
System.out.println( " Hit field: "+field.getName() );
System.out.println( " Value: "+field.getValue() );
}
null . ...
EDIT2:
-, addFieldDataField() , . " <fieldname>".
-, addField(), .
SearchResponse.addFieldDataField( <fieldname>.raw )SearchResponse.addField( <leaffieldname> )
SearchHitField.getValue().
.