728x90
반응형
인덱스와 도큐먼트가 무엇인지 알아보기 전에, 엘라스틱 서치 API 관련해서 알아보자.
엘라스틱서치 요청과 응답
엘라스틱 서치는 모든 요청과 응답을 REST API 형태로 제공한다. REST API를 활용하여 엘라스틱에 데이터를 적재하거나 조회할 수 있다.
2021.12.30 - [프로그래밍 노트/인프라] - [엘라스틱 스택] 맥북 실습 환경 구성
이전에 설치한 엘라스틱서치 서버에 curl로 API 요청을 해도 되고, 키바나에서 제공해주는 Dev Tools를 이용해서 손쉽게 API를 호출할 수 있다. (Management > Dev Tools)
// es_index 라는 인덱스를 생성하고, 1번 도큐먼트를 생성한다.
POST es_index/_doc/1
{"name":"corn", "age": 30}
// es_index 조회
GET es_index
// es_index 내부의 1번 도큐먼트만 조회
GET es_index/_doc/1
// es_index 삭제
DELETE es_index
인덱스와 도큐먼트
엘라스틱서치를 이해하기 위해서는 인덱스(index)와 도큐먼트(document)는 필수로 알아야하는데, 생각보다 개념이 어렵지는 않다.
- 인덱스 - 도큐먼트를 저장하는 논리적 구분자
- 도큐먼트 - 실제 데이터를 저장하는 단위
- 하나의 클러스터에 데이터 성격에 따라 여러 개의 인덱스가 존재한다.
- 인덱스 내부는 JSON 형태로 된 다수의 도큐먼트가 존재한다.
- 도큐먼트는 복수의 필드를 갖는다.
엘라스틱 서치에 저장되는 JSON데이터를 도큐먼트, 이 도큐먼트들을 저장하는 구분자(성격에 맞게)가 인덱스이다.
도큐먼트
- 데이터가 저장되는 기본 단위로 JSON형태이다.
- 여러 필드(field)와 값(value)를 갖음
// JSON 형식의 도큐먼트
{
"name": "corn", // 필드
"age": 30, // 필드
"gender": "male" // 필드
}
엘라스틱서치의 도큐먼트, 인덱스는 RDB와 많이 비교가되는데 위의 JSON 데이터가 member라는 인덱스에 저장된 도큐먼트라고 생각하고 비교해보자
엘라스틱 서치
- index : member
- document : {"name": "corn", "age": 30, "gender": "male"}
RDB
- 테이블 : member(name, age, gener 컬럼을 가짐)
- 레코드 데이터 : "corn", 30, "male"
index는 RDB의 테이블, document는 레코드 데이터와 성격이 비슷하다.
RDB | 엘라스틱서치 |
---|---|
테이블 | 인덱스 |
레코드 | 도큐먼트 |
컬럼 | 필드 |
스키마 | 매핑 |
인덱스
- 도큐먼트를 저장하는 논리적 단위(RDB의 테이블과 유사한 개념이다.)
도큐먼트 CRUD
REST API..!
인덱스 생성
PUT index1
or
POST index1
도큐먼트 생성
- 도큐먼트를 인덱스에 포함시키는 것을 인덱싱(indexing)이라고 부른다.
PUT index1/_doc/1
{
"name":"corn",
"age":30
}
도큐먼트 읽기
GET index1/_doc/1
// search라는 DSL 쿼리를 이용해 도큐먼트를 읽어올 수 있다.
GET index1/_search
도큐먼트 수정
PUT index1/_doc/1
{
"name": "hello"
}
// update API를 사용하여 업데이트할 수 있다.
POST index1/_update/1
{
"doc": {
"name": "hello"
}
}
도큐먼트 삭제
DELETE index1/_doc/1
도큐먼트 생성에서 보면, 우리는 필드 값의 타입을 지정한적이 없다. 엘라스틱서치는 도큐먼트의 필드 값을 보고 타입을 자동으로 지정하는데, 이 기능을 다이내믹 매핑(dynamic mapping)이라고 한다. 매핑은 다음 포스팅에서 알아보자.
참고) 엘라스틱 스택 개발부터 운영까지
728x90
반응형
'프로그래밍 노트 > 인프라' 카테고리의 다른 글
[Logstash] 로그스태시란? 로그스태시 활용기 (0) | 2022.08.16 |
---|---|
[엘라스틱 서치] 매핑과 인덱스 템플릿 (0) | 2022.01.03 |
[엘라스틱 스택] 맥북 실습 환경 구성 (0) | 2021.12.30 |
[엘라스틱 스택] 엘라스틱 스택 찍먹하기 (0) | 2021.12.23 |
젠킨스 Master/Slave 분산 빌드 환경 도커로 구축하기 (1) | 2021.01.30 |