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 파라미터 값을 상속받아요.
관련 문서 (Related documentation)
- Disable objects