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; /** * Root object type * * @see <a href="http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/mapping-root-object-type.html#mapping-root-object-type">Root Object Type</a> */ @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.TYPE) public @interface Indexable { /** * Index type name, default to class name in lower_underscore format */ String name() default ""; /** * "index_analyzer" field in mapping */ String indexAnalyzer() default ""; /** * "search_analyzer" field in mapping */ String searchAnalyzer() default ""; /** * "dynamic_date_formats" field in mapping */ String[] dynamicDateFormats() default {}; /** * "date_detection" field in mapping */ DateDetectionEnum dateDetection() default DateDetectionEnum.NA; /** * "numeric_detection" field in mapping */ NumericDetectionEnum numericDetection() default NumericDetectionEnum.NA; /** * path of parent id field */ String parentPath() default ""; /** * Class of the parent type */ Class parentClass() default void.class; /** * "store" in "_type" * * @see <a href="http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/mapping-type-field.html">Mapping type field</a> */ boolean typeFieldStore() default false; /** * "index" in "_type" * * @see <a href="http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/mapping-type-field.html">Mapping type field</a> */ IndexEnum typeFieldIndex() default IndexEnum.NA; /** * "enabled" in "_source" * * @see <a href="http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/mapping-source-field.html">Mapping source field</a> */ boolean sourceFieldEnabled() default true; /** * "compress" in "_source" * * @see <a href="http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/mapping-source-field.html#compression">Mapping source field compress</a> */ boolean sourceFieldCompress() default false; /** * "compress_threshold" in "_source" * * @see <a href="http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/mapping-source-field.html#compression">Mapping source field compress</a> */ String sourceFieldCompressThreshold() default ""; /** * "includes" in "_source" * * @see <a href="http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/mapping-source-field.html#include-exclude">Mapping source field include</a> */ String[] sourceFieldIncludes() default {}; /** * "excludes" in "_source" * * @see <a href="http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/mapping-source-field.html#include-exclude">Mapping source field exclude</a> */ String[] sourceFieldExcludes() default {}; /** * "enabled" in "_all" * * @see <a href="http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/mapping-all-field.html">Mapping all field</a> */ boolean allFieldEnabled() default true; /** * "store" in "_all" * * @see <a href="http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/mapping-all-field.html">Mapping all field</a> */ boolean allFieldStore() default false; /** * "term_vector" in "_all" * * @see <a href="http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/mapping-all-field.html">Mapping all field</a> */ TermVectorEnum allFieldTermVector() default TermVectorEnum.NA; /** * "analyzer" in "_all" * * @see <a href="http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/mapping-all-field.html">Mapping all field</a> */ String allFieldAnalyzer() default ""; /** * "index_analyzer" in "_all" * * @see <a href="http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/mapping-all-field.html">Mapping all field</a> */ String allFieldIndexAnalyzer() default ""; /** * "search_analyzer" in "_all" * * @see <a href="http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/mapping-all-field.html">Mapping all field</a> */ String allFieldSearchAnalyzer() default ""; /** * "path" in "_analyzer" * * @see <a href="http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/mapping-analyzer-field.html">Mapping analyzer field</a> */ String analyzerFieldPath() default ""; /** * "name" in "_boost" * * @see <a href="http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/mapping-boost-field.html">Mapping boost field</a> * @deprecated deprecated in ElasticSearch 1.0.0.rc1 */ @Deprecated String boostFieldName() default ""; /** * "name" in "_boost" * * @see <a href="http://www.elasticsearch.org/guide/en/elasticsearch/reference/1.x/mapping-boost-field.html">Mapping boost field</a> * @deprecated deprecated in ElasticSearch 1.0.0.rc1 */ @Deprecated double boostFieldNullValue() default Double.MIN_VALUE; /** * "store" in "_routing" * * @see <a href="http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/mapping-routing-field.html#_store_index">Mapping routing field</a> */ boolean routingFieldStore() default true; /** * "index" in "_routing" * * @see <a href="http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/mapping-routing-field.html#_store_index">Mapping routing field</a> */ IndexEnum routingFieldIndex() default IndexEnum.NA; /** * "required" in "_routing" * * @see <a href="http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/mapping-routing-field.html#_required">Mapping routing field</a> */ boolean routingFieldRequired() default false; /** * "path" in "_routing" * * @see <a href="http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/mapping-routing-field.html#_path">Mapping routing field</a> */ String routingFieldPath() default ""; /** * "enabled" in "_index" * * @see <a href="http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/mapping-index-field.html">Mapping index field</a> */ boolean indexFieldEnabled() default false; /** * "enabled" in "_size" * * @see <a href="http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/mapping-size-field.html">Mapping size field</a> */ boolean sizeFieldEnabled() default false; /** * "store" in "_size" * * @see <a href="http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/mapping-size-field.html">Mapping size field</a> */ boolean sizeFieldStore() default false; /** * "enabled" in "_timestamp" * * @see <a href="http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/mapping-timestamp-field.html#_enabled">Mapping timestamp field</a> */ boolean timestampFieldEnabled() default false; /** * "store" in "_timestamp" * * @see <a href="http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/mapping-timestamp-field.html#_store_index_2">Mapping timestamp field</a> */ boolean timestampFieldStore() default false; /** * "index" in "_timestamp" * * @see <a href="http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/mapping-timestamp-field.html#_store_index_2">Mapping timestamp field</a> */ IndexEnum timestampFieldIndex() default IndexEnum.NA; /** * "path" in "_timestamp" * * @see <a href="http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/mapping-timestamp-field.html#_path_2">Mapping timestamp field</a> */ String timestampFieldPath() default ""; /** * "format" in "_timestamp" * * @see <a href="http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/mapping-timestamp-field.html#_format">Mapping timestamp field</a> */ String timestampFieldFormat() default ""; /** * "enabled" in "_ttl" * * @see <a href="http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/mapping-ttl-field.html#_enabled_2">Mapping ttl field</a> */ boolean ttlFieldEnabled() default false; /** * "store" in "_ttl" * * @see <a href="http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/mapping-ttl-field.html#_store_index_3">Mapping ttl field</a> */ boolean ttlFieldStore() default true; /** * "index" in "_ttl" * * @see <a href="http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/mapping-ttl-field.html#_store_index_3">Mapping ttl field</a> */ IndexEnum ttlFieldIndex() default IndexEnum.NA; /** * "default" in "_timestamp" * * @see <a href="http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/mapping-ttl-field.html#_default">Mapping ttl field</a> */ String ttlFieldDefault() 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; }