package org.xbib.elasticsearch.action.skywalker.support; import org.apache.lucene.document.DoubleField; import org.apache.lucene.document.FloatField; import org.apache.lucene.document.IntField; import org.apache.lucene.document.LongField; import org.apache.lucene.index.IndexableField; import org.elasticsearch.common.xcontent.ToXContent; import org.elasticsearch.common.xcontent.XContentBuilder; import java.io.IOException; /** * Indexable field to XContent */ public class IndexableFieldToXContent implements ToXContent { private IndexableField field; public IndexableFieldToXContent field(IndexableField field) { this.field = field; return this; } @Override public XContentBuilder toXContent(XContentBuilder builder, Params params) throws IOException { builder.startObject(); builder.field("name", field.name()); if (field.binaryValue() != null) { builder.field("type", "binary") .field("value", field.binaryValue()); } else if (field.stringValue() != null) { builder.field("type", "string") .field("value", field.stringValue()); } else if (field.numericValue() != null) { if (field instanceof IntField) { builder.field("type", "integer") .field("value", field.numericValue().intValue()); } else if (field instanceof LongField) { builder.field("type", "long") .field("value", field.numericValue().longValue()); } else if (field instanceof FloatField) { builder.field("type", "float") .field("value", field.numericValue().floatValue()); } else if (field instanceof DoubleField) { builder.field("type", "double") .field("value", field.numericValue().doubleValue()); } } builder.field("stored", field.fieldType().stored()); builder.field("indexed", field.fieldType().indexed()); builder.field("omitNorms", field.fieldType().omitNorms()); builder.field("storeTermVectors", field.fieldType().storeTermVectors()); builder.field("storeTermVectorOffsets", field.fieldType().storeTermVectorOffsets()); builder.field("storeTermVectorPayloads", field.fieldType().storeTermVectorPayloads()); builder.field("storeTermVectorPositions", field.fieldType().storeTermVectorPositions()); builder.field("boost", field.boost()); builder.endObject(); return builder; } }