| 일 | 월 | 화 | 수 | 목 | 금 | 토 | 
|---|---|---|---|---|---|---|
| 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 | 
- BFS
 - 자바PS
 - 01BFS
 - 엘라스틱서치
 - 우선순위큐
 - dp
 - 세그먼트트리
 - 백준코딩테스트
 - COSPROJAVA1급
 - 취득후기
 - 이젠 골드구현도 어렵네..
 - spring
 - PS
 - 재귀함수
 - DFS
 - 알고리즘
 - 완전탐색
 - 시뮬레이션
 - 네트워크플로우
 - GatherTown
 - YBMCOS
 - QUICKSTARTGUIDE
 - 다익스트라
 - 백준
 - 다이나믹프로그래밍
 - 게더타운시작
 - 구현
 - deque
 - COSPRO
 - java
 
- Today
 
- Total
 
공부공간
[Elastic Search] ElasticSearch CRUD 본문
엘라스틱 서치의 이해를 위해 용어를 정리하기 위해서, 기존 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를
이용하여 넣지만 기본적인 조회메소드를 이해하기위함이였습니다.
'ELK 뽀개기 > ElasticSearch' 카테고리의 다른 글
| [Elastic Search] Content-Type header [application/x-www-form-urlencoded] is not supported error (0) | 2020.08.24 | 
|---|---|
| [Elastic Search] Elastic Search란? + window 10에서 Elastic Search 설치 (0) | 2020.08.22 |