티스토리 뷰

* 해당 포스트는 저번 시간에 진행한 ELK 설치 후 실행 이후 기준으로 작성했습니다.

이번 시간에는 ElasticSearch에 기본 활용법에 대해서 알아보려 합니다. 

저는 기존에 받아둔 docker-compose 파일을 통해서 ELK 스택을 실행시켜 테스트 해보려합니다. 만약 ElasticSearch가 설치 되어 있지 않다면, 이번 시간에는 어떤방식이든(가상머신, 데스크톱 등) 에서 ElasticSearch를 설치하시면 됩니다. 저는 CentOS 환경에서 실행 후 진행했습니다. 

 

- 확인 사항 - 

Docker 실행 확인 ( Downsystemctl start docker)

docker logs [elasticsearch container id] 로 정상 실행 중인지 체크

ElasticSearch 인증 관련 문제시 xpack 설정 false,


#curl -XGET http://[CentOS-IP]:9200/[Index]( Index 조회 )

저같은 경우 배정받은 IP가 10.10.0.20 이기 때문에 해당 호스트로 접속 시 아래와 같은 메시지가 출력됩니다.

no such index를 보시면 알겠지만, itbank라는 index는 생성하지 않았기에 해당 내용을 찾지 못하고 404에러를 출력합니다. 즉 GET방식으로 호출을 하게되면, index를 조회하게 됩니다. 근데.. 좀 보기 불편하죠? 조금 더 이쁘게 출력하기 위한 파라미터도 존재합니다.

# ?pertty

http://[CentOS IP]:9200/itbank?pretty 형태로 요청을 보내면 아래와 같이 구조가 이쁘게 출력됩니다.


#curl -XPUT http://[CentOS-IP]:9200/[Index] ( Index 생성)

자 이제 Index 생성을 위해서 PUT method를 보내려 합니다. 만약 제대로 생성이 이뤄졌다면 아래와 같은 메시지가 응답값으로 출력됩니다.

다시 조회 요청을 통해서 살표보면, 비어있는 Index를 확인 할 수 있습니다.


#curl -XDELETE http://[CentOS-IP]:9200/[Index]( Index 삭제)

해당 요청은 index 삭제를 위한 요청정보입니다. 

다시 조회를 해보면, 초기 생성전의 404에러 메시지가 출력됩니다. 


#curl -XPUT http://[CentOS-IP]:9200/[Index]/_doc/[ID]/ '{ ~ }' (Document 생성)

이제 기본적인 Document를 생성하려 합니다. 해당 명령 실행 시 굳이 Index를 새로 생성 할 필요는 없습니다. 자동으로 생성을 해주거든요! POST에 이미 itbank라는 index명이 들어갔으니 해당 index명으로 자동으로 생성을 해줍니다. 그리고 뒤에오는 파라미터들을 통해 타입과 id 명을 정해주고, { ~ } 안에 들어가는 값을 통해 Document를 생성합니다.

예전에는 type명까지 지정해줬으나 업데이트 이후로는 도큐먼트 타입의 개념이 사라지고 _doc으로만 접근이 가능합니다.

#EX) Document 생성

> curl -XPUT "http://localhost:9200/itbank/_doc/1" -H 'Content-Type: application/json' -d'{"name":"Park GG","message":"Hello!"}'

#해당 문서 확인

> curl -XGET "http://localhost:9200/itbank/_doc/1"

그리고 ElasticSearch 가 업데이트 된 이후로 이 Document Type이라는게 굉장히 중요하게 쓰이는데 

http://localhost:9200/itbank/_doc/1 해당 부분에서 _doc으로 되어 있는 부분이 Type입니다. 해당 Type을 통해서 여러가지 요청을 할 수 있습니다.

기본이라고 볼 수 있는 _doc은 내가 기본적으로 문서와 관련해 작업을 할때 사용됩니다. 그리고 _create 가 있는데, 일종  실수방지를 위해 개발된 타입 같습니다. _doc으로 생성하게 된다면, 기존에 중복된 이름의 document도 삭제 후 덮어씌워버리는 문제가 발생하는데, 새로운 index생성 시 _create를 통해서 생성하게 되면, 중복체크를 통해서 이러한 문제점을 방지 할 수 있습니다.

그리고 _update라는 태그를 사용하면, 원하는 부분만 부분적으로 업데이트 할 수 있습니다. 기존 PUT은 덮어쓰기 개념으로만 사용이 가능하지만, _update태그를 붙히면,  특정 부부만 수정 할 수 있습니다.

#curl -XPOST http://[CentOS-IP]:9200/[Index]/_update/[ID]/ '{ ~ }' (update)

기존의 메시지는 Um.. 이라는 메시지 었습니다. 해당 메시지를 변경하려 합니다.

ex)

curl -XPOST "http://localhost:9200/itbank/_update/1" -H 'Content-Type: application/json' -d'{"doc":{"message":"Jun..."}}'

_update 와 Content-Type 그리고 수정할 컬럼을 {"doc":{"~":"~"}} 형태로 보내주면 다음과 같이 업데이트가 완료 됩니다.

다시 조회를 하게 되면 다음과 같이 업데이트가 완료가 됐음을 알 수 있습니다.


오늘은 Elastic Search REST Api 를 활용해서 기본적인 CRUD를 진행해봤습니다. 써보니까 어떠신가요? ElasticSearch 의 가장 큰 장점은 원하는 index를 그냥 입력만 하면, 자동으로 넣을 수 있습니다. Nosql답게 쿼리문으로 느껴지는 부분은 하나도 없었을거에요! 그만큼 간편하고 빠른 NoSQL DB중에 하나입니다!

감사합니다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
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
글 보관함