better handling of source return value based on content type (embed it if its the same content type)

This commit is contained in:
kimchy 2010-04-30 00:08:33 +03:00
parent 34d99c39a5
commit ceb0138aa8
2 changed files with 9 additions and 3 deletions

View File

@ -27,6 +27,7 @@ import org.elasticsearch.client.Client;
import org.elasticsearch.rest.*;
import org.elasticsearch.util.guice.inject.Inject;
import org.elasticsearch.util.settings.Settings;
import org.elasticsearch.util.xcontent.XContentFactory;
import org.elasticsearch.util.xcontent.builder.XContentBuilder;
import java.io.IOException;
@ -87,7 +88,12 @@ public class RestGetAction extends BaseRestHandler {
builder.field("_type", response.type());
builder.field("_id", response.id());
if (response.source() != null) {
builder.rawField("_source", response.source());
if (builder.contentType() == XContentFactory.xContentType(response.source())) {
builder.rawField("_source", response.source());
} else {
builder.field("_source");
builder.value(response.source());
}
}
if (response.fields() != null && !response.fields().isEmpty()) {

View File

@ -206,10 +206,10 @@ public class InternalSearchHit implements SearchHit {
builder.field("_id", id());
if (source() != null) {
if (XContentFactory.xContentType(source()) == builder.contentType()) {
builder.rawField("_source", source());
} else {
builder.field("_source");
builder.value(source());
} else {
builder.rawField("_source", source());
}
}
if (fields != null && !fields.isEmpty()) {