Elasticsearch Kibana Script field

JunMyung Lee·2024년 3월 21일
0

Elasticsearch

목록 보기
32/42

Kibana에서 Visualize를 통해서 시각화를 해야하는 경우, 특정 필드값을 연산하여 처리해야하는 경우가 있는데, 이때 시각화만을 위한 필드를 따로 색인할 수 없으므로 고민하던 순간, 자체적으로 Scripted fields를 Kibana용으로 처리하여 보여줄 수 있다.

Index Pattern - Scripted fields

Stack Management - Index Patterns - Scripted fields 를 통해 메뉴에 진입하게 되면, Add scripted field을 클릭한다

Create Scripted field

  • Name : 필드 명
  • Language : 사용언어 (Painless)
  • Type: 변수 타입
  • Format: 필드에 대한 형식 (Date)

Language에서 Javascript나 Groovy를 사용할 수 있다고는 하지만 따로 설정방법이 필요하며 제한이 있을 수 있으며 보안상의 이유와 실험적인 방식이기 때문에 권장하지 않는다고 한다

Script

script 내용으로 """ """으로 코드를 감쌌을때 처럼 작성하면된다. 마지막 반환값은 return에 정의한다.

예제1. 문자열을 숫자형태로 변환하는 코드

return Integer.parseInt(params['_source']['logHour']);

예제2. List의 개수를 반환하는 코드

if (params['_source']['data'].containsKey('items') && params['_source']['data']['items'] != null) {
    return params['_source']['data']['items'].size();
} else {
    return 0;
}

Query에서의 script는 doc, ingest-pipeline에서는 ctx로 값을 가져오는데 Index pattern script에서는 params['_source']를 통해 접근한다.

profile
11년차 검색개발자 입니다. 여러 지식과 함께 실제 서비스를 운영 하면서 발생한 이슈에 대해서 정리하고 공유하고자 합니다.

0개의 댓글