Kibana에서 Visualize를 통해서 시각화를 해야하는 경우, 특정 필드값을 연산하여 처리해야하는 경우가 있는데, 이때 시각화만을 위한 필드를 따로 색인할 수 없으므로 고민하던 순간, 자체적으로 Scripted fields
를 Kibana용으로 처리하여 보여줄 수 있다.
Stack Management - Index Patterns - Scripted fields 를 통해 메뉴에 진입하게 되면, Add scripted field
을 클릭한다
Language에서 Javascript나 Groovy를 사용할 수 있다고는 하지만 따로 설정방법이 필요하며 제한이 있을 수 있으며 보안상의 이유와 실험적인 방식이기 때문에 권장하지 않는다고 한다
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']
를 통해 접근한다.