RangeFieldMapper.java 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. package org.es.mapping.mapper;
  2. import org.elasticsearch.common.xcontent.XContentBuilder;
  3. import org.es.mapping.annotations.enums.RangeType;
  4. import org.es.mapping.annotations.fieldtype.RangeField;
  5. import java.io.IOException;
  6. import java.lang.reflect.Field;
  7. public class RangeFieldMapper {
  8. public static boolean isValidRangeFieldType(Field field) {
  9. return field.isAnnotationPresent(RangeField.class);
  10. }
  11. public static void mapDataType(XContentBuilder mappingBuilder, RangeField rangeField) throws IOException {
  12. mappingBuilder.field("type", rangeField.type().code());
  13. if (rangeField.type() == RangeType.DateRange) {
  14. mappingBuilder.field("format", rangeField.format());
  15. }
  16. if (!rangeField.coerce()) {
  17. mappingBuilder.field("coerce", rangeField.coerce());
  18. }
  19. if (rangeField.boost() != 1.0f) {
  20. mappingBuilder.field("boost", rangeField.boost());
  21. }
  22. if (!rangeField.include_in_all()) {
  23. mappingBuilder.field("include_in_all", rangeField.include_in_all());
  24. }
  25. else if (!rangeField.index()) {
  26. mappingBuilder.field("include_in_all", false);
  27. }
  28. if (!rangeField.index()) {
  29. mappingBuilder.field("index", rangeField.index());
  30. }
  31. if (rangeField.store()) {
  32. mappingBuilder.field("store", rangeField.store());
  33. }
  34. }
  35. public static void mapDataType(XContentBuilder mappingBuilder, Field field) throws IOException {
  36. if (!isValidRangeFieldType(field)) {
  37. throw new IllegalArgumentException(
  38. String.format("field type[%s] is invalid type of range.", field.getType()));
  39. }
  40. RangeField stringField = field.getDeclaredAnnotation(RangeField.class);
  41. mapDataType(mappingBuilder, stringField);
  42. }
  43. }