package com.github.kzwang.osem.annotations; import com.fasterxml.jackson.databind.JsonDeserializer; import com.fasterxml.jackson.databind.JsonSerializer; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; /** * Used for core objects * * @see <a href="http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/mapping-core-types.html">Core Type</a> */ @Retention(RetentionPolicy.RUNTIME) @Target(value = {ElementType.FIELD, ElementType.METHOD}) public @interface IndexableProperty { /** * name of the field, default to field name */ String name() default ""; /** * field type, "type" field in mapping, default to auto detect */ TypeEnum type() default TypeEnum.AUTO; /** * "index_name" field in mapping */ String indexName() default ""; /** * "store" field in mapping */ boolean store() default false; /** * "index" field in mapping */ IndexEnum index() default IndexEnum.NA; /** * "doc_values" field in mapping */ boolean docValues() default false; /** * "doc_values_format" field in mapping */ DocValuesFormatEnum docValuesFormat() default DocValuesFormatEnum.NA; /** * "term_vector" field in mapping */ TermVectorEnum termVector() default TermVectorEnum.NA; /** * "boost" field in mapping */ double boost() default Double.MIN_VALUE; /** * "null_value" field in mapping */ String nullValue() default ""; /** * "norms.enabled" field in mapping */ NormsEnabledEnum normsEnabled() default NormsEnabledEnum.NA; /** * "norms.loading" field in mapping */ NormsLoadingEnum normsLoading() default NormsLoadingEnum.NA; /** * "index_options" field in mapping */ IndexOptionsEnum indexOptions() default IndexOptionsEnum.NA; /** * "analyzer" field in mapping */ String analyzer() default ""; /** * "index_analyzer" field in mapping */ String indexAnalyzer() default ""; /** * "search_analyzer" field in mapping */ String searchAnalyzer() default ""; /** * "include_in_all" field in mapping */ IncludeInAllEnum includeInAll() default IncludeInAllEnum.NA; /** * "ignore_above" field in mapping */ int ignoreAbove() default Integer.MIN_VALUE; /** * "position_offset_gap" field in mapping */ int positionOffsetGap() default Integer.MIN_VALUE; /** * "precision_step" field in mapping */ int precisionStep() default Integer.MIN_VALUE; /** * "ignore_malformed" field in mapping */ boolean ignoreMalformed() default false; /** * "coerce" field in mapping */ boolean coerce() default true; /** * format of Date * "format" field in mapping * if multiple format specified, will use the first * * @see <a href="http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/mapping-date-format.html">Date Format</a> */ String format() default ""; /** * "copy_to" field in mapping * * @see <a href="http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/mapping-core-types.html#_copy_to_field">Copy to field</a> */ String[] copyTo() default {}; /** * "postings_format" field in mapping */ PostingsFormatEnum postingsFormat() default PostingsFormatEnum.NA; /** * "similarity" field in mapping */ SimilarityEnum similarity() default SimilarityEnum.NA; /** * "lat_lon" field in mapping for Geo Point type */ boolean geoPointLatLon() default false; /** * "geohash" field in mapping for Geo Point type */ boolean geoPointGeohash() default false; /** * "geohash_precision" field in mapping for Geo Point type */ int geoPointGeohashPrecision() default Integer.MIN_VALUE; /** * "geohash_prefix" field in mapping for Geo Point type */ boolean geoPointGeohashPrefix() default false; /** * "validate" field in mapping for Geo Point type */ boolean geoPointValidate() default true; /** * "validate_lat" field in mapping for Geo Point type */ boolean geoPointValidateLat() default true; /** * "validate_lon" field in mapping for Geo Point type */ boolean geoPointValidateLon() default true; /** * "normalize" field in mapping for Geo Point type */ boolean geoPointNormalize() default true; /** * "normalize_lat" field in mapping for Geo Point type */ boolean geoPointNormalizeLat() default true; /** * "normalize_lon" field in mapping for Geo Point type */ boolean geoPointNormalizeLon() default true; /** * "tree" field in mapping for Geo Shape type */ GeoShapeTreeEnum geoShapeTree() default GeoShapeTreeEnum.NA; /** * "precision" field in mapping for Geo Shape type */ String geoShapePrecision() default ""; /** * "tree_levels" field in mapping for Geo Shape type */ int geoShapeTreeLevels() default Integer.MIN_VALUE; /** * "distance_error_pct" field in mapping for Geo Shape type */ float geoShapeDistanceErrorPct() default Float.MIN_VALUE; // for fielddata /** * set "format" in fielddata */ FieldDataFormat fieldDataFormat() default FieldDataFormat.NA; /** * set "loading" in fielddata */ FieldDataLoading fieldDataLoading() default FieldDataLoading.NA; /** * "min" in fielddata.filter.frequency */ String fieldDataFilterFrequencyMin() default ""; /** * "max" in fielddata.filter.frequency */ String fieldDataFilterFrequencyMax() default ""; /** * "min_segment_size" in fielddata.filter.frequency */ String fieldDataFilterFrequencyMinSegmentSize() default ""; /** * "pattern" in fielddata.filter.regex */ String fieldDataFilterRegexPattern() default ""; /** * Mapping json string, will convert to JSON object and send to ElasticSearch directly */ String rawMapping() default ""; /** * Indicate when value should be include in JSON object */ JsonInclude jsonInclude() default JsonInclude.DEFAULT; /** * Json DeSerializer class, must extend {@link JsonDeserializer} */ Class<? extends JsonDeserializer> deserializer() default JsonDeserializer.class; /** * Json Serializer class, must extend {@link JsonSerializer} */ Class<? extends JsonSerializer> serializer() default JsonSerializer.class; }