boolean 필드 타입
boolean 필드 타입
도입: 1.0
boolean 필드 타입은 true 또는 false 값, 혹은 "true" 또는 "false" 문자열을 받아요. 또한 false 값 대신 빈 문자열("")을 전달할 수도 있어요.
출처: 문서
본문
예제
a, b, c가 boolean 필드인 매핑을 만들어요:
PUT testindex
{
"mappings" : {
"properties" : {
"a" : {
"type" : "boolean"
},
"b" : {
"type" : "boolean"
},
"c" : {
"type" : "boolean"
}
}
}
}
boolean 값을 가진 문서를 인덱스해요:
PUT testindex/_doc/1
{
"a" : true,
"b" : "true",
"c" : ""
}
결과적으로 a와 b는 true로, c는 false로 설정돼요. c가 false인 모든 문서를 검색해요:
GET testindex/_search
{
"query": {
"term" : {
"c" : false
}
}
}
파라미터
다음 표는 boolean 필드 타입이 받는 파라미터를 나열해요. 모든 파라미터는 선택적이에요.
| 파라미터 | 설명 |
|---|---|
boost |
관련성 점수에 대한 이 필드의 가중치를 지정하는 부동소수점 값. 1.0보다 큰 값은 필드의 관련성을 높이고, 0.0과 1.0 사이의 값은 관련성을 낮춰요. 기본값은 1.0. 동적으로 업데이트 가능. |
doc_values |
필드를 디스크에 저장해 집계, 정렬, 스크립팅에 사용할 수 있게 할지 지정하는 Boolean 값. 기본값은 true. |
index |
필드를 검색 가능하게 할지 지정하는 Boolean 값. 기본값은 true. |
meta |
이 필드에 대한 메타데이터를 받음. |
null_value |
null 대신 사용할 값. 필드와 동일한 타입이어야 함. 이 파라미터를 지정하지 않으면 값이 null일 때 필드가 없는 것으로 취급됨. 기본값은 null. |
store |
필드 값을 저장하고 _source 필드와 별도로 검색할 수 있게 할지 지정하는 Boolean 값. 기본값은 false. |
집계와 스크립트에서의 boolean 값
boolean 필드에 대한 집계에서 key는 숫자 값(1은 true, 0은 false)을 반환하고, key_as_string은 문자열("true" 또는 "false")을 반환해요. 스크립트는 boolean 값에 대해 true와 false를 반환해요.
예제
a 필드에 대해 terms 집계 쿼리를 실행해요:
GET testindex/_search
{
"aggs": {
"agg1": {
"terms": {
"field": "a"
}
}
},
"script_fields": {
"a": {
"script": {
"lang": "painless",
"source": "doc['a'].value"
}
}
}
}
스크립트는 a의 값을 true로 반환하고, key는 a의 값을 1로, key_as_string은 a의 값을 "true"로 반환해요:
{
"took" : 1133,
"timed_out" : false,
"_shards" : {
"total" : 1,
"successful" : 1,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : {
"value" : 1,
"relation" : "eq"
},
"max_score" : 1.0,
"hits" : [
{
"_index" : "testindex",
"_type" : "_doc",
"_id" : "1",
"_score" : 1.0,
"fields" : {
"a" : [
true
]
}
}
]
},
"aggregations" : {
"agg1" : {
"doc_count_error_upper_bound" : 0,
"sum_other_doc_count" : 0,
"buckets" : [
{
"key" : 1,
"key_as_string" : "true",
"doc_count" : 1
}
]
}
}
}
Derived source
인덱스가 derived source를 사용하면, OpenSearch가 소스 재구성 중에 다중 값 boolean 필드의 값을 정렬할 수 있어요. 다음 예제는 OpenSearch가 혼합된 boolean 입력을 처리하는 방법을 보여줘요.
derived source를 활성화하고 a라는 boolean 필드를 구성하는 인덱스를 만들어요:
PUT /sample-index1
{
"settings": {
"index": {
"derived_source": {
"enabled": true
}
}
},
"mappings": {
"properties": {
"a": {"type": "boolean"}
}
}
}
인덱스에 문서를 인덱스해요:
PUT sample-index1/_doc/1
{
"a": [false, "true", "false", true, ""]
}
OpenSearch가 _source를 재구성한 후, 유도된 _source는 다음과 같아요:
{
"a": [false, false, false, true, true]
}
필드 매핑이 null_value를 정의하면, 재구성 중에 입력된 null 값이 해당 값으로 대체돼요. 다음 예제는 null_value가 derived source 출력에 어떤 영향을 주는지 보여줘요.
derived source를 활성화하고 boolean 필드 a에 null_value를 구성하는 인덱스를 만들어요:
PUT sample-index2
{
"settings": {
"index": {
"derived_source": {
"enabled": true
}
}
},
"mappings": {
"properties": {
"a": {"type": "boolean", "null_value": true}
}
}
}
인덱스에 문서를 인덱스해요:
PUT sample-index2/_doc/1
{
"a": [null, true, "false"]
}
OpenSearch가 _source를 재구성한 후, 유도된 _source는 다음과 같아요:
{
"a": [false, true, true]
}