'Field'에 해당되는 글 2건

  1. 2014.02.24 [elasticsearch] internal mapper 알아보기.
  2. 2013.05.27 [lucene] field options for indexing - StringField.java

[elasticsearch] internal mapper 알아보기.

Elastic/Elasticsearch 2014.02.24 17:01

core type에 대해서 알아 봤으니 internal field에 해당하는 field를 알아보겠습니다.

관련 패키지는 아래와 같습니다.

package org.elasticsearch.index.mapper.internal;


lucene 관련 소스도 core type에서 봤던것과 동일 합니다.

하지만 여기서는 추가 설명을 해드리도록 하겠습니다.

package org.apache.lucene.document;


public class FieldType implements IndexableFieldType {

..........

}



▶ setIndexed(boolean)

index yes, no 설정 입니다.


▶ setTokenized(boolean)

index analyzed, not_analyzed 설정 입니다.


▶ setStored(boolean)

store yes, no 설정입니다.


▶ setStoreTermVectors(boolean)

term_vector 에서 yes, no 설정 입니다.


▶ setStoreTermVectorOffsets(boolean)

term_vector 에서 with_offsets 설정 입니다.


▶ setStoreTermVectorPositions(boolean)

term_vector 에서 with_positions 설정 입니다.


▶ setOmitNorms(boolean)

norms.enabled 에서 true, false 설정 입니다.

elasticsearch에서 이름을 변경했는데요. 반대라고 이해 하시면 됩니다.

이 값은 보시면 AbstractFieldMapper 에서 기본 false 입니다. 즉 norms.enabled:true 라는 이야기가 됩니다.

뭐 당연한 이야기 입니다.

elasticsearch 에서는 기본 analyzed로 설정하기 때문입니다.


▶ setIndexOptions(IndexOptions value)

index_options 설정에서 docs(문서번호), freqs(문서번호 + term빈도수), positions(freqs + positions), offsets(positions + offsets) 설정 입니다.

analyzed 설정 시 기본 positions로 설정 되며, not_analyzed 설정 시 기본 docs로 설정 됩니다.



[All field]


public static final boolean ENABLED = true;

static {
    FIELD_TYPE.setIndexed(true);
    FIELD_TYPE.setTokenized(true);
    FIELD_TYPE.freeze();
}



[Boost field]


public static final String NAME = "_boost";
public static final Float NULL_VALUE = null;

public static final FieldType FIELD_TYPE = new FieldType(NumberFieldMapper.Defaults.FIELD_TYPE);

static {
    FIELD_TYPE.setIndexed(false);
    FIELD_TYPE.setStored(false);
}



[Id field]


static {
    FIELD_TYPE.setIndexed(false);
    FIELD_TYPE.setStored(false);
    FIELD_TYPE.setOmitNorms(true);
    FIELD_TYPE.setIndexOptions(IndexOptions.DOCS_ONLY);
    FIELD_TYPE.freeze();
}

public static final String PATH = null;



[Index field]


static {
    FIELD_TYPE.setIndexed(true);
    FIELD_TYPE.setTokenized(false);
    FIELD_TYPE.setStored(false);
    FIELD_TYPE.setOmitNorms(true);
    FIELD_TYPE.setIndexOptions(IndexOptions.DOCS_ONLY);
    FIELD_TYPE.freeze();
}

public static final EnabledAttributeMapper ENABLED_STATE = EnabledAttributeMapper.DISABLED;



[Parent field]


static {
    FIELD_TYPE.setIndexed(true);
    FIELD_TYPE.setTokenized(false);
    FIELD_TYPE.setStored(true);
    FIELD_TYPE.setOmitNorms(true);
    FIELD_TYPE.setIndexOptions(IndexOptions.DOCS_ONLY);
    FIELD_TYPE.freeze();
}



[Routing field]


static {
    FIELD_TYPE.setIndexed(true);
    FIELD_TYPE.setTokenized(false);
    FIELD_TYPE.setStored(true);
    FIELD_TYPE.setOmitNorms(true);
    FIELD_TYPE.setIndexOptions(IndexOptions.DOCS_ONLY);
    FIELD_TYPE.freeze();
}

public static final boolean REQUIRED = false;
public static final String PATH = null;



[Size field]


public static final EnabledAttributeMapper ENABLED_STATE = EnabledAttributeMapper.DISABLED;

public static final FieldType SIZE_FIELD_TYPE = new FieldType(IntegerFieldMapper.Defaults.FIELD_TYPE);

static {
    SIZE_FIELD_TYPE.freeze();
}



[Source field]


public static final boolean ENABLED = true;
public static final long COMPRESS_THRESHOLD = -1;
public static final String FORMAT = null; // default format is to use the one provided

static {
    FIELD_TYPE.setIndexed(false);
    FIELD_TYPE.setStored(true);
    FIELD_TYPE.setOmitNorms(true);
    FIELD_TYPE.setIndexOptions(IndexOptions.DOCS_ONLY);
    FIELD_TYPE.freeze();
}



[Timestamp field]


public static final FieldType FIELD_TYPE = new FieldType(DateFieldMapper.Defaults.FIELD_TYPE);

static {
    FIELD_TYPE.setStored(false);
    FIELD_TYPE.setIndexed(true);
    FIELD_TYPE.setTokenized(false);
    FIELD_TYPE.freeze();
}

public static final EnabledAttributeMapper ENABLED = EnabledAttributeMapper.DISABLED;
public static final String PATH = null;
public static final FormatDateTimeFormatter DATE_TIME_FORMATTER = Joda.forPattern(DEFAULT_DATE_TIME_FORMAT);



[Ttl field]


public static final FieldType TTL_FIELD_TYPE = new FieldType(LongFieldMapper.Defaults.FIELD_TYPE);

static {
    TTL_FIELD_TYPE.setStored(true);
    TTL_FIELD_TYPE.setIndexed(true);
    TTL_FIELD_TYPE.setTokenized(false);
    TTL_FIELD_TYPE.freeze();
}

public static final EnabledAttributeMapper ENABLED_STATE = EnabledAttributeMapper.DISABLED;
public static final long DEFAULT = -1;



[Type field]


static {
    FIELD_TYPE.setIndexed(true);
    FIELD_TYPE.setTokenized(false);
    FIELD_TYPE.setStored(false);
    FIELD_TYPE.setOmitNorms(true);
    FIELD_TYPE.setIndexOptions(IndexOptions.DOCS_ONLY);
    FIELD_TYPE.freeze();
}



[Uid field]


public static final FieldType NESTED_FIELD_TYPE;

static {
    FIELD_TYPE.setIndexed(true);
    FIELD_TYPE.setTokenized(false);
    FIELD_TYPE.setStored(true);
    FIELD_TYPE.setOmitNorms(true);
    FIELD_TYPE.setIndexOptions(FieldInfo.IndexOptions.DOCS_ONLY);
    FIELD_TYPE.freeze();

    NESTED_FIELD_TYPE = new FieldType(FIELD_TYPE);
    NESTED_FIELD_TYPE.setStored(false);
    NESTED_FIELD_TYPE.freeze();
}


신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback 0 : Comment 0

[lucene] field options for indexing - StringField.java

Elastic/Elasticsearch 2013.05.27 10:52

lucene 3.6.X 에는 없는 클래스 입니다.

4.X 에서 처음 등장한 넘이구요.

코드를 조금 보면

public final class StringField extends Field {


  /** Indexed, not tokenized, omits norms, indexes

   *  DOCS_ONLY, not stored. */

  public static final FieldType TYPE_NOT_STORED = new FieldType();


  /** Indexed, not tokenized, omits norms, indexes

   *  DOCS_ONLY, stored */

  public static final FieldType TYPE_STORED = new FieldType();


  static {

    TYPE_NOT_STORED.setIndexed(true);

    TYPE_NOT_STORED.setOmitNorms(true);

    TYPE_NOT_STORED.setIndexOptions(IndexOptions.DOCS_ONLY);

    TYPE_NOT_STORED.setTokenized(false);

    TYPE_NOT_STORED.freeze();


    TYPE_STORED.setIndexed(true);

    TYPE_STORED.setOmitNorms(true);

    TYPE_STORED.setIndexOptions(IndexOptions.DOCS_ONLY);

    TYPE_STORED.setStored(true);

    TYPE_STORED.setTokenized(false);

    TYPE_STORED.freeze();

  }


  /** Creates a new StringField. 

   *  @param name field name

   *  @param value String value

   *  @param stored Store.YES if the content should also be stored

   *  @throws IllegalArgumentException if the field name or value is null.

   */

  public StringField(String name, String value, Store stored) {

    super(name, value, stored == Store.YES ? TYPE_STORED : TYPE_NOT_STORED);

  }

}


무조건 index true 입니다.

기존이랑은 좀 다르죠.

예전 옵션에 대한 정보만 가지고 있으면 실수 할 수도 있는 부분이라 살짝 올려봤습니다.

신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback 0 : Comment 0

티스토리 툴바