본문 바로가기

카테고리 없음

[ES] Kibana devtools로 CRUD실습하기

 

입력 형식

http://<호스트>:<포트>/<인덱스>/<도큐먼트타입>/<도큐먼트ID>

 

 

 

1. 도큐먼트 생성

 

1) PUT으로 입력

PUT 도큐먼트의집합인덱스/_doc/1
{
  "name": "kimsky",
  "message": "배고파요."
}

 

 

PUT 메서드로 입력시 주의 할 것! 기존에 존재하는 도큐먼트 아이디에 데이터를 입력했을 경우 기존 내용이 다 삭제되고 새 값이 입력 된다는 것! 이것을 방지하기 위해서 도큐먼트 타입을 _create로 해서 입력하는 것이 바람직함

기존에 존재하는 도큐먼트 아이디에 입력하면 에러 발생

 

새로운 아이디로 입력

 

2) POST로 입력하기

POST를 사용해서 입력하면 도큐먼트ID를 입력하지 않음, 도큐먼트 입력 시 아이디가 자동 생성 됨

PUT 도큐먼트의집합인덱스/_doc
{
  "name": "kimsky",
  "message": "배고파요."
}

 

자동 생성된 도큐먼트 아이디를 넣어서 조회

 

 

 

 

2. 도큐먼트 조회

입력한 도큐먼트 조회

GET 도큐먼트의집합인덱스/_doc/1

 

 

3. 삭제

 

1) 도큐먼트 삭제

DELETE 도큐먼트의집합인덱스/_doc/1

 

삭제한 도큐먼트 조회: 도큐먼트는 삭제됐지만 인덱스는 조회되고 있음

 

2) 인덱스 삭제

DELETE 도큐먼트의집합인덱스

 

삭제한 인덱스 조회

 

 

4. 수정하기

 

1) PUT으로 수정하기

PUT 으로 수정 시 덮어쓰기가 됨

 

PUT을 이용한 수정은 기존 필드까지 넣어서 업데이트를 해줄 수 있지만 비효율적임

 

2) POST로 수정하기

POST를 이용해서 수정하는 방법을 이용하는 것이 효율적임: 도큐먼트 타입 _update

POST 도큐먼트의집합인덱스/_update/MUyOyY0Bf1c6PkQK_PlG
{
  "doc": {
    "add2": "이것은 효율적인 수정 방법"
  }
}

 

 

5. _bulk CRUD

도큐먼트 타입 _bulk를 이용해서 한번에 CRUD 하기 

입력: index, create

수정: update doc

삭제 delete

POST _bulk
{"index":{"_index":"인덱스명", "_id":"도큐먼트아이디1"}}
{"필드명1": "값1"}
{"index":{"_index":"인덱스명", "_id":"도큐먼트아이디2"}}
{"필드명1": "값2"}
{"create":{"_index":"인덱스명", "_id":"도큐먼트아이디3"}}
{"필드명1": "값3"}
{"update":{"_index":"인덱스명", "_id":"도큐먼트아이디1"}}
{"doc":{"필드명1": "값1에서 값2로 수정"}}
{"delete":{"_index":"인덱스명", "_id":"도큐먼트아이디2"}}

 

 

6. 검색하기

 

1) 도큐먼트 타입 _search를 이용해서 검색하기

POST _bulk
{"index":{"_index":"인덱스명", "_id":"도큐먼트아이디1"}}
{"필드명1": "값1 apple lemon fruit"}
{"index":{"_index":"인덱스명", "_id":"도큐먼트아이디2"}}
{"필드명1": "값2 flower tree fruit natural"}
{"create":{"_index":"인덱스명", "_id":"도큐먼트아이디3"}}
{"필드명1": "값3 water see river"}


GET 인덱스명/_search?q=fruit

 

 

2) 필드명과 값을 넣어서 검색하기

 

3) OR 조건 넣어서 검색하기

POST _bulk
{"index":{"_index":"인덱스명", "_id":"도큐먼트아이디1"}}
{"과일": "값1 apple lemon fruit"}
{"index":{"_index":"인덱스명", "_id":"도큐먼트아이디2"}}
{"자연": "값2 flower tree fruit natural"}
{"create":{"_index":"인덱스명", "_id":"도큐먼트아이디3"}}
{"물": "값3 water see river"}


GET 인덱스명/_search?q=자연:fruit  과일:fruit

 

 

4) 데이터 본문(body)에 넣어서 검색하기

GET 인덱스명/_search
{
  "query": {
    "match": {
      "과일": "fruit"
    }
  }
}