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

더 알아보기 (Learn more)