본문 바로가기
공부

Elasticsearch) CRUD

by son_i 2023. 12. 8.
728x90

ES의 단일 데이터는 document

index는 document의 논리적인 집합.

 

도큐먼트 접근

http://<호스트>:<포트>/<인덱스>/_doc/<도큐먼트 id>

 

데이터 입력(PUT)

PUT 이용

PUT my_index/_doc/1
{
  "name":"Jongmin Kim",
  "message":"안녕하세요 Elasticsearch"
}

이미 있는 인덱스에 아래와 같은 데이터를 PUT명령으로 넣게 되면 이전 document는 사라지고 덮어씌워짐.

PUT my_index/_doc/1
{
  "age:":40
}

 

데이터 보기

GET my_index/_doc/1

 

데이터 삭제

DELETE my_index/_doc/1 //인덱스에 해당하는 data만 삭제됨.

DELETE my_indx //인덱스 통째로 삭제

 

수정(POST)

post명령으로 처음 데이터를 만들 때 document id를 안 넣으면 자동으로 생성이 됨. 

만들어진 id로 조회 가능

GET my_index/_doc/u_PKRIwB7YbGwB_mQ7D4

 

id가 중복되면 데이터가 유실될 가능성이 있기 때문에

여러 개의 데이터를 겹치지 않게 저장하려면 POST로 할 수도 잇음

 

Update

Post 명령으로 _doc대신 _update입력해서 하되 중괄호 안에 "doc":{} 안에 추가 할 데이터를 넣어줘야함.

* 기존에 없던 필드면 추가가되고 있던 필드면 수정

POST my_index/_update/1
{
  "doc":{
    "age:":40
  }
}

벌크 API : 여러가지 명령을 한 번에 실행하고자 할 때

POST _bulk 이용.

한 줄은 명령 줄

한 줄은 데이터 줄

두 줄 한 쌍으로 입력. 

POST _bulk
{"index":{"_index":"test", "_id":"1"}} //index는 색인 == 입력
{"field":"value one"}
{"index":{"_index":"test", "_id":"2"}}
{"field":"value two"}
{"delete":{"_index":"test", "_id":"2"}} //delete는 명령줄만 있음. 삭제기 때문에
{"create":{"_index":"test", "_id":"3"}} //index와 똑같이 입력
{"field":"value three"}
{"update":{"_index":"test", "_id":"1"}} //update할 때는 
{"doc":{"field":"value two"}}			//"doc"안에 추가할 내용 적어줌.

 

대용량 데이터를 색인할 때는 _bulk 인덱스를 사용해야함.

속도차이가 굉장히 많이 남(10배 이상)


검색API 

인덱스 뒤에 _search 사용

1. URI검색

요청 주소에 검색어를 넣어 검색하는 방식을 URI 검색이라고 함.

filed에 two라는 문자열이 있는 도큐먼트(Row)가 검색됨.

GET test/_search?q=two
GET test/_search?q=field:three //필드에 three가 있는 도큐먼트가 검색됨.
GET test/_search?q=field:three AND field:value //and조건을 둘다 만족하는 도큐먼트가 검색됨.

 

2. Data Body 검색

쿼리문을 사용해서 Data Body로 검색하는 경우가 많음. 쿼리문이 json 도큐먼트로 되어있어서 좋음

"query" : {사용할 쿼리종류 넣음}

가장 많이 사용하는 종류 "match" : {}

"field" : "" //field부분엔 필드명을 입력, ""안에는 찾을 문자열입력

GET test/_search
{
  "query": {
    "match": {
      "field": "value"
    }
  }
}

 


참조 

모든 내용은 아래 가이드 북에서 참고해 정리했습니다.

큰 도움 받았습니다. . . . 

https://esbook.kimjmin.net/04-data/4.2-crud

 

4.2 CRUD - 입력, 조회, 수정, 삭제 - Elastic 가이드북

{"_index":"my_index","_type":"_doc","_id":"1","_version":1,"result":"created","_shards":{"total":2,"successful":1,"failed":0},"_seq_no":0,"_primary_term":1}

esbook.kimjmin.net