Developer with Cat
© 2021. All rights reserved.
#[🌎elasticsearch] Elasticsearch CRUD 기본사용법 (feat. Kibana)
Elasticsearch 가이드북 ✈
Elasticsearch 홈페이지 가기 ✈
ElasticSearch 의 search 와 Bulk 기능은 이후 포스트에서 다루겠습니다.
ElasticSearch 에서는 REST APIs 안의 Document APIs 에서 해당 내용을 다루고 있습니다.
Index
ElasticSearch 의 Index 는 흔히 아는 배열의 인덱스와는 다르게 데이터베이스의 테이블과 유사한 개념을 가지고 있습니다. 같은 NoSQL MongoDB 의 Collector 와 비슷하다고 생각하시면 편합니다.
HTTP 프로토콜
ElasticSearch 는 http 프로토콜로 접근제어가 가능합니다.
RESTFul
PUT, POST, GET, DELETE 메소드를 통해 자원을 제어할 수 있습니다.
기본적으로 리눅스의 Curl 기능 또는 vscode 의 rest client 등의 기능과 같이 URL을 이용해 자원에 접근제어를 할 수도 있지만 우리가 저번시간에 설치한 Kibana 의 Dev Tool 기능을 통해 Elastic 환경을 실습해보도록 하겠습니다.
정상적으로 Kibana 가 설치되고 실행이 되고 있다면 http://localhost:5601 에 접속하면 Kibana 어플리케이션 메인화면이 기다리고 있어요!!
좌측 상단의 메뉴 버튼을 누른후 아래쪽의 Dev Tools 로 들어가줍니다.
Dev Tools 콘솔에서 좌측에서 Curl 과 비슷한 기능을 수행하고 우측에서 그 결과를 볼 수 있습니다.
일단 데이터베이스에서도 자원을 저장하고 사용하기 위해서 테이블을 만들듯이 ElasticSearch 에서도 이에 해당하는 Index 를 생성해줘야 합니다.
Index 생성에는 PUT 메소드를 사용하여 요청을 해야합니다.
일반적으로 생성에는 POST 갱신에는 PUT 메소드를 사용하지만 ElasticSearch 에서는 둘을 모호하게 사용합니다.
mydoc 이라는 Index 를 생성해봅시다.
PUT mydoc
위의 텍스트를 Dev Tools 콘솔 좌측에 입력후 해당 줄에 생기는 ▶ 이렇게 생긴 삼각형 버튼을 누르면 해당하는 요청이 전송됩니다.
Dev Tools 에서는 http://<호스트>:<포트>/ 가 생략되어 있습니다. 즉 위의 요청은 원래대로라면 PUT http://localhost:5601/mydoc 입니다. Dev tools 에서는 이 사항이 동일시 적용됩니다.포트>호스트>
바로 아래 이어서 첫 데이터를 생성해봅시다.
POST mydoc/_doc { "title" : "first Title", "contents" : "first contents" }
우측에 바로
위와 같은 형식의 결과 데이터가 보인다면 성공입니다. 우측상단에 201 status 코드와 해당 요청을 수행하는데 걸린 시간 또한 표시가 됩니다.
저는 second, third 가 들어가는 데이터를 두개 더 만들었습니다.
POST <인덱스>/\_doc/<아이디> 처럼 아이디를 명시하지 않으면 임의로 아이디를 생성하게 됩니다. 해당하는 아이디가 존재할 경우 **생성**이 아니라 **갱신**을하게 되므로 조심해야 합니다. 또한 PUT 메소드를 통해 PUT <인덱스>/\_create/<아이디> 처럼 생성만 가능하게도 할 수 있씁니다.아이디>인덱스>아이디>인덱스>
이제 확인을 해봅시다. 😎😎
좌측 상단의 메뉴 - 하단의 Stack Management 를 클릭합니다.
좌측 중간즈음 Kibana 카테고리 아래 Index Patterns 를 클릭합니다. 우리가 보려는 Index 를 명시하기 위해 Create Index pattern 을 클릭합니다.
Index pattern name 칸에 mydoc 을 입력하고 Next Step 을 클릭합니다.
우리가 만든 데이터에는 시간 데이터가 없기 때문에 아무것도 선택하지 않아도 생성됩니다. 시간 데이터가 한 개 이상이라면 시간별로 데이터를 추적할 수 있습니다. Create Index Pattern 을 클릭합시다.
이제 좌측 메뉴를 클릭 메뉴 상단의 Kibana - Discover 탭을 선택합니다.
여기서 우리가 위에서 입력했던 Index 의 데이터들이 나타나게 됩니다.
데이터를 생성하는 것은 이제 끝났습니다.
Read 는 매우 단순합니다!
GET mydoc/_doc/cdRVaXYBNC5Keng2JJce
위와 같이 GET <인덱스>/\_doc/<아이디> 형식으로 요청을 하게 되면 해당하는 데이터가 결과값으로 나오게 됩니다.!!아이디>인덱스>
우하우하!우하! 자료가 없으면 not found가 뜨게 됩니다!! 여기까지 하느라 고생많으셨습니다. 이제 얼마 안남았으니 영차영차! 😁😁😁😁
full-text-search 기능인 키워드를 통해 자료를 찾는 search 기능은 다음포스트에서 다루겠습니다.!!
이번에는 Update 기능을 수행해보겠습니다.
Update 는 PUT 메소드를 사용하여 수행할 수 있습니다. second Title 자료의 id를 복사하여 다음과 같은 형태의 요청을 만들어줍니다. 해당하는 Id 가 존재할 경우 데이터 전체를 업데이트하게 됩니다.
PUT mydoc/_doc/ctRWaXYBNC5Keng2Dpfm { "title" : "updated second title", "contents" : "updated second contents" }
성공하면 아래과 같이 result 에 updated 라는 결과값이 표시됩니다.
Kibana 의 Discover 탭을 보게 되면
우하! 행복하군요 Update 가 성공된 것을 확인할 수 있습니다.!!
마지막입니다.!! 이것만 알면 CRUD 기능은 끝 입니다.
DELETE mydoc/_doc/ctRWaXYBNC5Keng2Dpfm
바로 실행!!
삭제 결과 연산을 캡처 하는 것을 깜빡해서 데이터를 하나 더 만들고 다시 삭제해서 이전과 아이디가 다릅니다. ㅜㅜ
위와 같이 result 의 값으로 deleted가 뜨면 성공!!!!
여러분 만남이 있으면 끝도 있는법.
마지막으로 Index 님을 삭제 해드립시다. 잘가 … 😭😭😭😭
DELETE mydoc
삭제… 요청…
성공…
이후 Discover 탭에 어떠한 자료도 추적하지 못하게되었습니다.. 흐극
와우 커피 한잔 하면서 같이 따라해보셨나요. 생각보다 간단합니다. 다음에는 Search 님과 함께 통해 다시 찾아오겠습니다.!!
더 많은 자료 보러 공식홈페이지 가기!!