Elasticsearch - Rest High Level Client를 이용한 Index Template 생성
오늘 간단히 다루어볼 내용은 엘라스틱서치의 REST 자바 클라이언트인 Rest High Level Client를 이용하여 Index Template을 생성해보는 예제이다. 바로 예제로 들어간다.
public void indexTemplate() throws IOException {
String typeName = "_doc";
if(!existTemplate()) {
try(RestHighLevelClient client = createConnection();){
PutIndexTemplateRequest templateRequest = new PutIndexTemplateRequest("log-template");
templateRequest.patterns(Arrays.asList("logstash-*"));
XContentBuilder mapping = XContentFactory.jsonBuilder()
.startObject()
.startObject(typeName)
.startObject("properties")
.startObject("date")
.field("type","date")
.endObject()
.startObject("fieldName")
.field("type","keyword")
.endObject()
.endObject()
.endObject()
.endObject();
templateRequest.mapping("_doc", mapping);
AcknowledgedResponse templateResponse = client.indices().putTemplate(templateRequest, RequestOptions.DEFAULT);
if(!templateResponse.isAcknowledged()) throw new ElasticsearchException("Create Index Template Failed !");
}
}
}
해당 인덱스 템플릿으로 생성될 수 있는 인덱스 패턴은 배열로 여러개 지정가능하다. 현재 설정은 단순 mapping만 설정하였지만, settings 정보까지 인덱스 템플릿 설정으로 넣어줄 수 있다. 만약 로그스태시나 비트 프레임워크를 엘라스틱과 연동하여 일자별 로그를 수집하는 기능을 구현한다면 미리 인덱스 템플릿으로 생성될 인덱스의 정의를 잡아주는 것이 좋을 것이다.
이제 해당 인덱스 템플릿을 구성한 이후에 logstash-*로 시작하는 인덱스가 생성될때 위와 같은 mapping 설정대로 필드가 생성될 것이다.
출처: https://coding-start.tistory.com/190?category=757916 [코딩스타트]
'Elastic Stack > ElasticSearch' 카테고리의 다른 글
Elasticsearch - 한글 자동완성(Nori Analyzer, Ngram, Edge Ngram) (0) | 2021.04.19 |
---|---|
Elasticsearch - Aggregation API(엘라스틱서치 집계,파이프라인(Pipeline Aggregations) 집계) -3 (0) | 2021.04.19 |
Elasticsearch - Aggregation API(엘라스틱서치 집계,버킷(Bucket Aggregations) 집계) -2 (0) | 2021.04.19 |
Elasticsearch - Aggregation API(엘라스틱서치 집계,메트릭(Metric Aggregations) 집계) -1 (0) | 2021.04.19 |
ELK Stack - Logstash(로그스태시)를 이용한 로그 수집 (0) | 2021.04.19 |
ELK Stack - Filebeat(파일비트)란? 간단한 사용법 (0) | 2021.04.19 |
Elasticsearch - 엘라스틱서치 노드의 종류 그리고 클러스터링 (0) | 2021.04.19 |
Elasticsearch - 엘라스틱서치 자바 힙 메모리 변경(JVM Heap) (0) | 2021.04.19 |