본문 바로가기
ELK stack

[Elasticsearch] CRUD

by odls 2024. 7. 18.

Elasticsearch는 http프로토콜로 접근이 가능한 REST API를 지원하는 RESTFul 시스템

 

자원별로 고유 URL로 접근 가능하다.

 

PostMan, curl, Kibana 등등을 통해 쿼리 요청을 보낼 수 있다.

 

CRUD

request body의 "id" 와  "name" : 임의로 설정한 field 명

 

Index는 매핑(mapping)과 설정(settings) 을 통해 구조와 설정을 정의한다.

   index는 RDBMS의 테이블같은 개념이다.

 

Document는 JSON 형식으로 표현되며, 인덱스에 저장되는 각각의 데이터 항목이다.

   RDBMS의 "행(row)" 또는 "레코드(record)"에 해당

 

{"id" : "tester" , "name" : "kim"} : json 형식의 doc 데이터이다. 
   id와 name은 각각의 field이며,

   

Field는 RDBMS의 column에 해당한다.

 

ip는 request를 받을 host의 ip이며, port는 elasticsearch 가 사용하는 port를 기입하면 된다. (default 9200)

localhost의 경우 http://127.0.0.1:9200/~~ 식으로 요청을 보낸다.

 

생성

 

인덱스 생성

PUT http://ip:port/<index>

<index> 에 기입한 이름을 가진 index를 생성한다.

 

 

 

document 생성

(URL)
POST http://ip:port/<index>/_doc/<doc_id> 

(body)
{
	"id" : "tester", 
	"name" = "kim"
}
(URL)
PUT http://ip:port/<index>/_create/<doc_id> 

(body)
{
	"id" : "tester", 
	"name" = "kim"
}

인덱스에  두가지 field를 가진 id는 tester이고 name은 kim 인 document를 생성한다.

URL에 들어있는 <doc_id>와 , body에 담아서 보낸 field의 "id" 는 완전히 다르다.

 

id 미지정 시 elasticsearch에서 자동으로 부여한다.

 

검색은 <doc_id> 기준으로 이뤄지고 "id" 는 index가 가진 필드의 이름이다.

 

PUT메소드에 _create 옵션을 주어도 데이터 생성이 가능하다. 

 

PUT메소드에 -create 옵션 지정 시 새로운 document만 유효한 요청으로 받아들여진다. (데이터 수정 방지)

 

검색 

GET http://ip:port/<index>/_doc/<doc_id>

쿼리에 기입한 인덱스에, tester라는 id를 가진 document를 검색한다.

 

수정

(URL)
PUT http://ip:port/<index>/_doc/<doc_id>

(body)
{
	"id":"tester",
	"name":"park"
}

쿼리에 기입한 인덱스에, <doc_id> 에 해당하는 document를 body에 담긴 document로 수정한다.

 

 

삭제 

 

index 삭제

DELETE http://ip:port/<index>

쿼리에 기입한 인덱스를 삭제한다.

 

 

document 삭제

DELETE http://ip:port/<index>/<doc_id>

쿼리에 기입한 인덱스에, <doc_id>에 해당하는 document를 삭제한다.