Elasticsearch - Rest High Level Client를 이용한 Index Template 생성
2019. 6. 27. 20:39ㆍSearch-Engine/Elasticsearch&Solr
오늘 간단히 다루어볼 내용은 엘라스틱서치의 REST 자바 클라이언트인 Rest High Level Client를 이용하여 Index Template을 생성해보는 예제이다. 바로 예제로 들어간다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
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 !");
}
}
}
|
cs |
해당 인덱스 템플릿으로 생성될 수 있는 인덱스 패턴은 배열로 여러개 지정가능하다. 현재 설정은 단순 mapping만 설정하였지만, settings 정보까지 인덱스 템플릿 설정으로 넣어줄 수 있다. 만약 로그스태시나 비트 프레임워크를 엘라스틱과 연동하여 일자별 로그를 수집하는 기능을 구현한다면 미리 인덱스 템플릿으로 생성될 인덱스의 정의를 잡아주는 것이 좋을 것이다.
이제 해당 인덱스 템플릿을 구성한 이후에 logstash-*로 시작하는 인덱스가 생성될때 위와 같은 mapping 설정대로 필드가 생성될 것이다.
'Search-Engine > Elasticsearch&Solr' 카테고리의 다른 글
Elasticsearch - Aggregation API(엘라스틱서치 집계,버킷(Bucket Aggregations) 집계) -2 (1) | 2019.09.20 |
---|---|
Elasticsearch - Aggregation API(엘라스틱서치 집계,메트릭(Metric Aggregations) 집계) -1 (0) | 2019.09.19 |
ELK Stack - Logstash(로그스태시)를 이용한 로그 수집 (1) | 2019.06.26 |
ELK Stack - Filebeat(파일비트)란? 간단한 사용법 (1) | 2019.06.17 |
Elasticsearch - 엘라스틱서치 노드의 종류 그리고 클러스터링 (4) | 2019.06.08 |