2023년 7월 20일 목요일

엘라스틱 Runtime field - 7th

로그스태시를 이용한 데이터 연동 시 문자열 데이터는 형태소 단위로 인덱싱하는 text 타입과 집계 정렬 목적으로 인덱싱을 하지 않는 keyword 타입, 2개의 필드에 저장된다.


이때 keyword 타입 필드는 ignore_above(기본값은 256)보다 길이가 긴 데이터를 저장하지 않는다고 한다. 실제 text와 keyword 필드를 비교해보니 저장 결과가 다름. 지난 번 유실된 런타임 필드 개수와 정확히 같다.


ignore_above 수정.
PUT iislog-test
{
  "mappings": {
    "properties": {
      "agent": {
        "type": "text",
        "fields": {
          "keyword": {
            "type": "keyword",
            "ignore_above": 2560
          }
        }
      }
    }
  }
}
{
  “iislog-test": {
    "aliases": {},
    "mappings": {
      "properties": {
        "agent": {
          "type": "text",
          "fields": {
            "keyword": {
              "type": "keyword",
              "ignore_above": 2560
            }
          }
        }
      }
    },
    "settings": {
      "index": {
        "routing": {
          "allocation": {
            "include": {
              "_tier_preference": "data_content"
            }
          }
        },
        "number_of_shards": "1",
        "provided_name": "testttttt",
        "creation_date": "1689851100816",
        "number_of_replicas": "1",
        "uuid": "zSoylCrrRJ2OoAo4cNiwdQ",
        "version": {
          "created": "8040199"
        }
      }
    }
  }
}

재인덱싱 후 다시 런타임 필드를 만들어봤다. 필드 유실 없음.


agent 길이를 재보니 실제 256을 훌쩍 넘어가는 경우가 많다. 


이거 다 keyword 필드에 저장 안 되고 있었는데 여태 몰랐네(..)

댓글 없음:

댓글 쓰기

크리에이티브 커먼즈 라이선스