ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 엘라스틱서치 템플릿
    공부하기/엘라스틱서치 2024. 2. 13. 15:38

    -> 인덱스를 생성할 때마다 매번 설정값을 지정하는 수고를 덜 수 있다.

    -> 템플릿을 사전에 정의해두면 인덱스 생성 시 정의한 템플릿 설정대로 인덱스가 생성된다.

     

    인덱스 템플릿

    • index_petterns 필드를 통해 인덱스 패턴을 지정
    • 새로 생성되는 인덱스의 이름이 패턴과 부합하면 템플릿에 맞춰 인덱스가 생성된다.
    • priority 필드 값을 이용하여 템플릿간 우선순위를 조정할 수 있다.

    문법

    PUT _index_template/템플릿이름
    {
    	"index_pattern": [...],
        "priority": 원하는값,
        "template": {
        	"settings": {
            	...
            }
        },
        ...
    }

     

    -> 실습

    인덱스 템플릿 생성
    index_patterns에 맞는 인덱스 생성
    템플릿이 잘 적용된걸 확인할 수 있습니다.

     

     

    컴포넌트 템플릿

    • 템플릿에서 중복되는 작은 영역을 컴포넌트화하여 사용

    문법

    PUT _component_template/컴포넌트템플릿이름
    {
    	"tempalte": {
        	// mappings, settings 등등
            ...
            
        }
    }
    
    // 다른 템플릿에서 컴포넌트 템플릿을 사용할 경우
    {
    	...
        "composed_of": [ "컴포넌트템플릿이름", ... ]
    }

     

    -> 실습

    mappings 컴포넌트 생성
    settings 컴포넌트 생성
    컴포넌트 템플릿을 활용하여 인덱스 템플릿 생성
    위 생성한 인덱스 패턴에 맞는 인덱스 생성
    2개의 컴포넌트 템플릿이 적용되어 생성된걸 확인할 수 있습니다.

    레거시 템플릿

    • 엘라스틱서치 7.8.0버전 이전 버전에서 주로 사용
    • 컴포넌트 템플릿을 사용할 수 없다는 점을 제외하고는 인덱스 템플릿과 동일한 기능
    • 우선순위가 낮은 템플릿 
      • 엘라스틱서치는 인덱스가 생성되면 인덱스 템플릿을 먼저 확인한다.
      • 매칭되는 인덱스 템플릿이 존재하지 않는 경우 레거시 템플릿을 확인한다.

    문법

    PUT _template/템플릿이름
    {
    	"index_patterns": [...],
        "template": {
        	"settings": {
            	...
            },
            "mappings": {
            	...
            }
        }
    }

     

     

    동적 템플릿

    • 인덱스에 새로 들어온 필드의 매핑을 사전에 정의한대로 동적으로 생성
    • 인덱스를 생성할 때, 인덱스 템플릿을 생성할 때 함께 지정한다.

    문법

    {
        ...
        "mappings": {
        	 "dynamic_templates": [
                {
                  "동적템플릿이름": { 
                    ... match conditions ... 
                    "mapping": { ... } 
                  }
                },
                ...
              ]
        }
    }

     

    * match conditions 

    • match_mapping_type : 새로 들어오는 데이터의 타입을 JSON 파서를 이용해 확인
      • boolean, double, long, string, object, date
    • match / unmatch : 필드의 이름이 지정된 패턴과 일치하는지 확인

    * 동적 템플릿 - mappings.type을 통해 저장되는 필드의 타입을 매핑할 수 있음

     

    -> 실습

    인덱스를 생성할 때 동적 템플릿을 함께 정의

     

    생성한 인덱스에 문서 색인
    동적템플릿이 적용되어 my_integer 필드의 타입이 integer로 설정 됌

     

     

    빌트인 인덱스 템플릿

    • 엘라스틱서치 7.9.0 이상 버전은 비트인 인덱스 템플릿을 제공한다.
    • 로그, 메트릭 관련 빌트인 인덱스 패턴이 존재하고 priority는 100으로 설정되어 있음
      • metrics-*-* 
      • logs-*-*
    • 내장된 템플릿과 동일한 패턴을 사용하고 싶은 경우 priority값을 100보다 크게 설정하여야한다.

     

     

     

Designed by Tistory.