IP 주소 필드 타입
IP 주소 필드 타입
ip 필드 타입은 IPv4 또는 IPv6 형식의 IP 주소를 담아요. IP 주소 범위를 표현하려면 IP range 필드 타입을 사용해요.
출처: 문서
본문
예시
IP 주소가 있는 매핑을 만들어 볼게요.
PUT testindex
{
"mappings" : {
"properties" : {
"ip_address" : {
"type" : "ip"
}
}
}
}
IP 주소가 있는 문서를 색인해 볼게요.
PUT testindex/_doc/1
{
"ip_address" : "10.24.34.0"
}
특정 IP 주소를 인덱스에서 쿼리해 볼게요.
GET testindex/_doc/1
{
"query": {
"term": {
"ip_address": "10.24.34.0"
}
}
}
IP 주소와 관련 네트워크 마스크 검색
CIDR(Classless Inter-Domain Routing) 표기법으로 인덱스에서 IP 주소를 쿼리할 수 있어요. CIDR 표기법에서는 IP 주소와 접두사 길이(0–32)를 /로 구분해 지정해요. 예를 들어 접두사 길이가 24면 처음 24비트가 같은 모든 IP 주소가 매칭돼요.
IPv4 형식의 예시 쿼리
GET testindex/_search
{
"query": {
"term": {
"ip_address": "10.24.34.0/24"
}
}
}
IPv6 형식의 예시 쿼리
GET testindex/_search
{
"query": {
"term": {
"ip_address": "2001:DB8::/24"
}
}
}
query_string 쿼리에서 IPv6 형식의 IP 주소를 사용하면 : 문자를 이스케이프해야 해요. 이 문자는 특수 문자로 파싱되기 때문이에요. IP 주소를 큰따옴표로 감싸고, 그 큰따옴표를 \로 이스케이프하면 돼요.
GET testindex/_search
{
"query" : {
"query_string": {
"query": "ip_address:\"2001:DB8::/24\""
}
}
}
파라미터 (Parameters)
ip 필드 타입이 받는 파라미터는 다음 표와 같아요. 모든 파라미터는 선택 사항이에요.
| 파라미터 | 설명 |
|---|---|
boost |
관련성 점수에 대한 이 필드의 가중치를 지정하는 부동소수점 값이에요. 1.0보다 큰 값은 필드의 관련성을 높이고, 0.0과 1.0 사이의 값은 관련성을 낮춰요. 기본값은 1.0이에요. 동적으로 업데이트 가능해요. |
doc_values |
집계, 정렬, 스크립팅에 사용할 수 있도록 필드를 디스크에 저장할지 여부를 지정하는 불리언 값이에요. 기본값은 true예요. |
ignore_malformed |
잘못된 형식의 값을 무시하고 예외를 던지지 않도록 지정하는 불리언 값이에요. 기본값은 false예요. 동적으로 업데이트 가능해요. |
index |
필드를 검색 가능하게 할지 여부를 지정하는 불리언 값이에요. 기본값은 true예요. |
null_value |
null 대신 사용할 값이에요. 필드와 같은 타입이어야 해요. 이 파라미터를 지정하지 않으면 값이 null일 때 필드가 없는 것으로 처리돼요. 기본값은 null이에요. |
store |
필드 값을 저장하고 _source 필드와 별도로 검색할 수 있게 할지 여부를 지정하는 불리언 값이에요. 기본값은 false예요. |
파생 소스 (Derived source)
인덱스가 derived source를 사용하면, OpenSearch는 소스 재구성 중에 다중 값 IP 필드의 IP 주소 값을 정렬하고 중복을 제거할 수 있어요.
derived source를 활성화하고 ip 필드를 구성한 인덱스를 만들어 볼게요.
PUT sample-index1
{
"settings": {
"index": {
"derived_source": {
"enabled": true
}
}
},
"mappings": {
"properties": {
"ip": {
"type": "ip"
}
}
}
}
중복을 포함한 여러 IP 주소가 있는 문서를 인덱스에 색인해 볼게요.
PUT sample-index1/_doc/1
{
"ip": ["10.16.0.1", "192.168.0.1", "10.16.0.1", "2001:0db8:85a3:0000:0000:8a2e:0370:7334"]
}
OpenSearch가 _source를 재구성한 뒤의 파생 _source는 중복을 제거하고 값을 정렬해요.
{
"ip": ["10.16.0.1", "192.168.0.1", "2001:0db8:85a3:0000:0000:8a2e:0370:7334"]
}