공부공간

[Elastic Search] ElasticSearch CRUD 본문

ELK 뽀개기/ElasticSearch

[Elastic Search] ElasticSearch CRUD

개발자가될수있을까? 2020. 8. 24. 13:59

엘라스틱 서치의 이해를 위해 용어를 정리하기 위해서, 기존 RelationDB와 비교하면서 외워둡시다.

Elastic Search Index Type Document Field Mapping
Relation DB DataBase Table Row Column Schema

<Elastic Search와 RDB의 용어정리>

 

또한 엘라스틱 서치는 Restful api를 사용하기때문에

Elastic Search GET POST PUT DELETE
Relation DB SELECT INSERT UPDATE DELETE

 

와같이 CRUD명령어가 조금 다릅니다.

 


그렇다면 엘라스틱서치엔진을 실행시키고, 직접 데이터를 넣어봅시다.

 

curl -XGET "localhost:9200"

 

최신버전으로 바꾸어 보았다.

 

 

작동이 잘된것을 확인하고, 필요한 인덱스를 생성해 봅시다. 

 

 

curl -XPUT "localhost:9200/blog"


curl -XPUT "localhost:9200/ Index이름 "

 

테스트용으로 blog 인덱스를 생성하였습니다. ( index의 이름은 lowercase를 지원합니다 )

 

 

이러한 index에 type을 부여하고 데이터를 넣는 방식에는 직접 데이터를 추가하는 것과, 파일형식(json)의 데이터를 

_bulk를 통하여 한번에 추가하는 방식이 있습니다.

 

이번시간에는 간단하게 첫번째 방식으로 데이터를 추가해보겠습니다.

 

curl -XPOST "localhost:9200/blog/post/1?pretty=true" -d
" {""name"" :"" sangwon"" , ""posttitle"" : ""elastic search beginning""}" 
-H "Content-Type: application/json"

데이터를 curl -XPOST로 넣기위한 3가지에 대해서 말씀드리면,

 

1. curl -XPOST "url 주소 / index 이름 / type 이름 / id 값 / ? pretty "

는 index의 type에 고유한 id 값에 데이터를 넣고, 그 결과를 pretty하게 출력하는 의미입니다. 

id를 지정하지않으면 랜덤한 값으로 지정됩니다. 알아보기 쉽게 지정해주세요.

 

2.  -d ( direct )의 지시자로 바로 json형식의 데이터를 정의해줍니다.

이름은 sangwon이고 포스트제목은 Elastic search beginning으로 지정하였습니다.

 

윈도우 10 에서는 ' {"name":"sangwon"}'이런식의 선언은 bracket error를 발생시킵니다.

큰따옴표 2개로 처리해줍시다. ( 실제 데이터를 이렇게 넣지 않으니 실습용으로만 사용합니다 )

 

3. Elastic search 5.x 버전 이상부터 헤더의 미디어 타입을 선언하여야합니다.

선언하지 않을시

{"error":"Content-Type header [application/x-www-form-urlencoded] is not supported","status":406}
 디폴트로설정된 미디어타입이 지원하지 않는다고 뜹니다.

꼭 -H "Content-Type:application/json"을 선언합시다.

 

이렇게 3개의 줄로 Elastic search에 데이터를 넣을 수 있습니다.

 

 

입력된 데이터는

 

curl -XGET "localhost:9200/blog/post/1?pretty=true"

로도 조회가 가능합니다.

 

 

수정과 삭제또한 마찬가지로 

 

수정 )

curl -XPUT "localhost:9200/blog/post/1?pretty" 
-d " {""name"":""sangwons""}" 
-H "Content-Type:application/json"


curl -XPUT "localhost:9200/ index 이름 / type 이름 / id 값 ?pretty" 
-d " {""name"":""sangwons""}"  <= 수정 할 데이터
-H "Content-Type:application/json"

수정후 조회 )

삭제 )

curl -XDELETE "localhost:9200/blog/post/1?pretty"

curl -XDELETE "localhost:9200/ index 이름 / type 이름 / id ?pretty"

 

삭제 후 조회 )

 

 

 

 

이처럼 기본 curd를 실습해 보았습니다. 실제는 json이나 csv데이터를 대량으로 넣기때문에 _bulk와 --data-binary를

이용하여 넣지만 기본적인 조회메소드를 이해하기위함이였습니다.

 

 

 

Comments