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]
}

더 알아보기 (Learn more)