Range 필드 타입
Range 필드 타입
OpenSearch가 지원하는 모든 range 필드 타입은 다음 표와 같아요.
출처: 문서
본문
| 필드 데이터 타입 | 설명 |
|---|---|
integer_range |
정수 값의 범위예요. |
long_range |
long 값의 범위예요. |
double_range |
double 값의 범위예요. |
float_range |
float 값의 범위예요. |
ip_range |
IPv4 또는 IPv6 형식의 IP 주소 범위예요. 시작과 끝 IP 주소는 서로 다른 형식일 수 있어요. |
date_range |
날짜 값의 범위예요. 시작과 끝 날짜는 서로 다른 형식일 수 있어요. 내부적으로 모든 날짜는 epoch 이후 밀리초를 나타내는 부호 없는 64비트 정수로 저장돼요. |
예시
double range와 date range가 있는 매핑을 만들어 볼게요.
PUT testindex
{
"mappings" : {
"properties" : {
"gpa" : {
"type" : "double_range"
},
"graduation_date" : {
"type" : "date_range",
"format" : "strict_year_month||strict_year_month_day"
}
}
}
}
double range와 date range가 있는 문서를 색인해요.
PUT testindex/_doc/1
{
"gpa" : {
"gte" : 1.0,
"lte" : 4.0
},
"graduation_date" : {
"gte" : "2019-05-01",
"lte" : "2019-05-15"
}
}
IP 주소 범위 (IP address ranges)
IP 주소 범위는 범위(range)와 CIDR(Classless Inter-Domain Routing) 표기법 두 가지 형식으로 지정할 수 있어요.
IP 주소 범위가 있는 매핑을 만들어요.
PUT testindex
{
"mappings" : {
"properties" : {
"ip_address_range" : {
"type" : "ip_range"
},
"ip_address_cidr" : {
"type" : "ip_range"
}
}
}
}
두 형식의 IP 주소 범위가 있는 문서를 색인해요.
PUT testindex/_doc/2
{
"ip_address_range" : {
"gte" : "10.24.34.0",
"lte" : "10.24.35.255"
},
"ip_address_cidr" : "10.24.34.0/24"
}
Range 필드 쿼리
Term 쿼리나 Range 쿼리를 사용해 range 필드 안의 값을 검색할 수 있어요.
Term 쿼리
term 쿼리는 값을 받아 값이 범위 안에 있는 모든 range 필드를 매칭해요.
다음 쿼리는 3.5가 [1.0, 4.0] 범위 안에 있으므로 문서 1을 반환해요.
GET testindex/_search
{
"query" : {
"term" : {
"gpa" : {
"value" : 3.5
}
}
}
}
Range 쿼리
range 필드에 대한 range 쿼리는 그 범위 안에 있는 문서를 반환해요.
"MM/dd/yyyy" 형식으로 날짜 범위를 제공하며 2019년의 모든 졸업 날짜를 쿼리해요.
GET testindex1/_search
{
"query": {
"range": {
"graduation_date": {
"gte": "01/01/2019",
"lte": "12/31/2019",
"format": "MM/dd/yyyy",
"relation" : "within"
}
}
}
}
이전 쿼리는 within과 intersects 관계에서는 문서 1을 반환하지만, contains 관계에서는 반환하지 않아요. relation 타입에 대한 자세한 내용은 range query parameters 문서를 참고하세요.
파라미터 (Parameters)
range 필드 타입이 받는 파라미터는 다음 표와 같아요. 모든 파라미터는 선택 사항이에요.
| 파라미터 | 설명 |
|---|---|
boost |
관련성 점수에 대한 이 필드의 가중치를 지정하는 부동소수점 값이에요. 1.0보다 큰 값은 필드의 관련성을 높이고, 0.0과 1.0 사이의 값은 관련성을 낮춰요. 기본값은 1.0이에요. 동적으로 업데이트 가능해요. |
coerce |
정수 값에 대해 소수를 잘라내고 문자열을 숫자 값으로 변환하도록 신호를 보내는 불리언 값이에요. 기본값은 true예요. 동적으로 업데이트 가능해요. |
index |
필드를 검색 가능하게 할지 여부를 지정하는 불리언 값이에요. 기본값은 true예요. |
store |
필드 값을 저장하고 _source 필드와 별도로 검색할 수 있게 할지 여부를 지정하는 불리언 값이에요. 기본값은 false예요. |