All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.github.kzwang.osem.annotations.IndexableProperty Maven / Gradle / Ivy

The newest version!
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 Core Type
 */
@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 Date Format
     */
    String format() default "";

    /**
     * "copy_to" field in mapping
     *
     * @see Copy to field
     */
    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 deserializer() default JsonDeserializer.class;

    /**
     * Json Serializer class, must extend {@link JsonSerializer}
     */
    Class serializer() default JsonSerializer.class;


}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy