2024 06 04
2024-06-04¶
Runtime Fields¶
참고: https://www.elastic.co/guide/en/elasticsearch/reference/7.17/runtime.html
- 개요
- 런타임 필드는 쿼리 타임에 평가/수행되는 필드
- 런타임 필드를 통해
- 재인덱싱 과정 없이, 존재하는 도큐먼트에 필드를 추가할 수 있음
- 데이터 구조에 대한 이해 없이 데이터로 작업 시작
- 쿼리 시점에 색인된 필드에서 반환된 값 재정의 가능
- 기존 스키마를 수정하지 않고 특정 용도에 맞는 필드 정의
- 데이터 구조가 확실하지 않은 로그 데이터로 작업 시, 런타임 필드가 유용함
- 검색 속도가 조금 느려질 수 있음
- 장점
- 인덱스 사이즈를 늘리지 않아도 사용 가능
- 런타임 필드를 통해 검색 요청, 집계, 필터링, 정렬에 사용 가능
- 런타임 필드 -> 인덱싱 필드로 전환 시, 런타임 필드 참조 쿼리 수정할 필요 X
- 데이터 수집이 완료된 시점에도 문서에 필드 추가 가능
- 런타임 필드를 사용하면 인덱스를 작게 유지하면서 기능 제공할 수 있음
- 인센티브
- 런타임 필드를 통해
_searchAPI를 사용하는 많은 방법 대체 가능- GET /_search 이런거
script fields를 통해서_source의 값들을 가져올 수 있음- 스크립트 기반으로 검색 요청의 문서를 필터링하는 스크립트 쿼리 작성 가능
- 런타임 필드를 통해
- 단점
- 런타임 필드는 디스크 공간을 덜 사용하고 데이터 액세스에 유연성을 제공하나... 검색 쿼리에 따라 검색 성능에 영향 줄 것
- 검색 성능과 유연성의 균형을 위해서...
- 타임스탬프 같은 자주 찾고 필터링하는 것은 인덱싱 해두세요
- 더 빠른 response time을 제공합니다
- 예시
Painless¶
참고: https://blog.naver.com/occidere/222102329176
- 개요
- ES 전용 Script 언어로, inline scripts/stored scripts에 사용
- 특징
- 빠른 성능
- 높은 안정성
- 동적 타입 지원 : int와 같은 명시타입 / def와 같은 동적 타입
- 문법 : Java와 유사
- 언제 쓰지?
- 하나의 데이터 내에서 필드간 연산, 가공 등이 필요한 경우 사용