Object 필드 타입

Object 필드 타입

object 필드 타입은 JSON 객체(이름/값 쌍의 집합)를 담아요. JSON 객체의 값은 또 다른 JSON 객체일 수 있어요. object는 기본 타입이므로 object 필드를 매핑할 때 타입으로 object를 지정할 필요는 없어요.

출처: 문서

본문

예시

object 필드가 있는 매핑을 만들어 볼게요.

PUT testindex1/_mappings
{
    "properties": {
      "patient": { 
        "properties" :
          {
            "name" : {
              "type" : "text"
            },
            "id" : {
              "type" : "keyword"
            }
          }   
      }
    }
}

object 필드가 있는 문서를 색인해요.

PUT testindex1/_doc/1
{ 
  "patient": { 
    "name" : "John Doe",
    "id" : "123456"
  } 
}

중첩 객체는 내부적으로 평면 키-값 쌍으로 저장돼요. 중첩 객체의 필드를 참조하려면 부모 필드.자식 필드(예: patient.id) 형식을 사용해요.

ID가 123456인 환자를 검색해 볼게요.

GET testindex1/_search
{
  "query": {
    "term" : {
      "patient.id" : "123456"
    }
  }
}

파라미터 (Parameters)

object 필드 타입이 받는 파라미터는 다음 표와 같아요. 모든 파라미터는 선택 사항이에요.

파라미터 설명
dynamic 객체에 새 필드를 동적으로 추가할 수 있는지 여부를 지정해요. 유효 값은 true, false, strict, strict_allow_templates, false_allow_templates이에요. 기본값은 true예요.
enabled 객체의 JSON 내용을 파싱할지 여부를 지정하는 불리언 값이에요. enabled가 false로 설정되면 객체의 내용은 색인되거나 검색되지 않지만, _source 필드에서는 여전히 검색할 수 있어요. 기본값은 true예요.
properties 이 객체의 필드들이며, 지원되는 모든 타입이 될 수 있어요. dynamic이 true로 설정되어 있으면 이 객체에 새 속성을 동적으로 추가할 수 있어요.

dynamic 파라미터

dynamic 파라미터는 이미 색인된 객체에 새 필드를 동적으로 추가할 수 있는지 여부를 지정해요.

예를 들어 처음에 한 필드만 가진 patient 객체로 매핑을 만들 수 있어요.

PUT testindex1/_mappings
{
    "properties": {
      "patient": { 
        "properties" :
          {
            "name" : {
              "type" : "text"
            }
          }   
      }
    }
}

그런 다음 patient에 새 id 필드가 있는 문서를 색인해요.

PUT testindex1/_doc/1
{ 
  "patient": { 
    "name" : "John Doe",
    "id" : "123456"
  } 
}

그 결과 id 필드가 매핑에 추가돼요.

{
  "testindex1" : {
    "mappings" : {
      "properties" : {        
        "patient" : {
          "properties" : {
            "id" : {
              "type" : "text",
              "fields" : {
                "keyword" : {
                  "type" : "keyword",
                  "ignore_above" : 256
                }
              }
            },
            "name" : {
              "type" : "text"
            }
          }
        }
      }
    }
  }
}

dynamic 파라미터의 유효 값은 다음과 같아요.

값 설명
true 새 필드를 매핑에 동적으로 추가할 수 있어요. 기본값이에요.
false 새 필드를 매핑에 동적으로 추가할 수 없어요. 새 필드가 감지되면 색인되거나 검색되지 않아요. 하지만 _source 필드에서는 여전히 검색할 수 있어요.
strict 매핑에 새 필드가 동적으로 추가되면 예외가 발생해요. 객체에 새 필드를 추가하려면 먼저 매핑에 추가해야 해요.
strict_allow_templates 새로 감지된 필드가 매핑의 미리 정의된 dynamic template 중 하나와 일치하면 매핑에 추가되고, 어느 것과도 일치하지 않으면 예외가 발생해요.
false_allow_templates 새로 감지된 필드가 매핑의 미리 정의된 dynamic template 중 하나와 일치하면 매핑에 추가돼요. dynamic template 또는 매핑 속성과 일치하는 필드만 색인돼요.

내부 객체는 자체 dynamic 파라미터 값을 선언하지 않는 한 부모로부터 dynamic 파라미터 값을 상속받아요.

  • Disable objects

더 알아보기 (Learn more)