본문 바로가기

ELK스택

[Elasticsearch] CRUD(입력, 조회, 수정, 삭제, 검색)

이번 글에서는 3가지를 정리해 보려고 합니다.

  • CRUD명령어
  • 벌크 API - (_bulk)
  • 검색 API - (_search)

window는 cmd창 mac은 terminal창에서 명령어를 직접 사용하여 데이터를 저장하거나 수정이 가능하지만, 저는 Kibana의 DevTools를 사용하여 학습을 진행하려고 합니다. 이 글은 아래 링크를 참조하여 작성되었습니다.

https://esbook.kimjmin.net/04-data/4.2-crud

 

4.2 CRUD - 입력, 조회, 수정, 삭제

이 문서의 허가되지 않은 무단 복제나 배포 및 출판을 금지합니다. 본 문서의 내용 및 도표 등을 인용하고자 하는 경우 출처를 명시하고 김종민(kimjmin@gmail.com)에게 사용 내용을 알려주시기 바랍

esbook.kimjmin.net

 

입력(PUT)

데이터의 입력은 PUT메서드를 사용할 수 있습니다.

현재 my_index라는 인덱스를 만들지는 않았지만, 아래 명령어를 실행하게 되면 my_index에서 document id가 1인 데이터를 입력하게 됩니다. 입력을 하면서 자동으로 index도 생성이 되게 됩니다.


 

조회(GET)

데이터의 조회는 GET메서드를 사용할 수 있습니다.

방금 my_index라는 인덱스에 document id가 1인 데이터를 저장하였으니, 그 결과를 조회해 보겠습니다.

 

삭제(DELETE)

데이터의 삭제는 DELETE메서드를 사용할 수 있습니다.

방금 생성한 my_index라는 인덱스의 document id가 1인 데이터를 지우고 GET my_index/_doc/1명령어를 실행하게 되면 "found" : false라는 결과가 나오게 됩니다. 이 의미는 찾지 못했다는 의미입니다.

이번에는 my_index라는 인덱스를 지운후 다시 조회하도록 하겠습니다.

my_index라는 인덱스를 찾지 못했다고 404오류가 떨어지게 됩니다.

 

수정(POST)

데이터의 수정은 POST명령어를 사용할 수 있습니다.

my_indx라는 인덱스의 document id가 1인 데이터의 age라는 필드를 추가해보도록 하겠습니다.

POST명령어의 경우 기존에 없던 필드면 추가가되지만, 있는 필드일 경우 수정이 됩니다.

 

벌크 API

벌크명령어는 여러가지 명령을 한번에 수행하기위해서 사용하는 명령어입니다. 왼쪽이미지 명령의 설명은 오른쪽 이미지를 참고하시면 됩니다.

대용량데이터를 색인할때는 bulk명령어를 사용해야합니다. 건건이 입력하는 것보다 속도차이가 많으면 10배이상 차이가 난다고 합니다. 그리고 elasticsearch에 포함되어있는 수집기인 logstash와 beats도 모두 bulk API를 사용한다고 합니다.

 

검색 API

bulk명령어로 넣어둔 데이터를 조회해보도록 하겠습니다.

위에 bulk명령어대로 진행하면 "_id":2가 delete되므로 저 부분을 지운후 다시 bulk를 하였습니다.

검색 명령어는 "GET test/_search?q=three"처럼 q파라미터를 줘서 검색을 할 수도 있고 "GET test/_search?q=field:three"처럼 field를 줘서 검색을 할 수도 있습니다.

하지만 이렇게 사용하는 경우는 많지 않고, 실제로는 쿼리문을 사용하여 DataBody를 검색을 합니다.

지금까지는 간단한 Search문법을 알아보았습니다.

다음 학습에서는 좀 더 자세한 쿼리문법을 공부하려고 합니다.