Document

뚜잇·2021년 10월 10일
0

ELK stack

목록 보기
3/3

elastic 한국어 문서 https://www.elastic.co/guide/kr/index.html를 읽고 작성


Elasticsearch는 데이터를 indexing/update/delete하는 시점부터 검색이 가능해질때까지 1초정도 걸림

  • Document indexing, replace

document를 indexing하는 명령

curl -XPUT http://localhost:9200/customer/external/1?pretty -d '{ "name" : "John Doe" }' -H 'Content-Type:
application/json'

을 실행 시 지정된 document를 'customer' index, external type으로 indexing하고 ID로 1일 지정

ID가 1인 기존 문서가 있을 경우, ID 1인 문서는 위의 새 문서로 대체됨 (다시 indexing됨)

curl -XPUT http://localhost:9200/customer/external/1?pretty -d '{ "name" : "Jane Doe" }' -H 'Content-Type:
application/json'

다음 명령 입력시 ID 1에 저장되어 있던 "name" : "John Doe"가 "name" : "Jane Doe" 로 업데이트(reindexing)됨

indexing시 ID를 지정하지 않는 경우, Elasticsearch에서 임의의 ID를 생성하여 부여

curl -XPOST http://localhost:9200/customer/external?pretty -d '{ "name" : "Jane Doe" }' -H 'Content-Type:
application/json'

ID를 지정하지 않는 경우, PUT 대신 POST 사용


  • Document update

update 명령 전송 시 Elasticsearch는 기존 document를 삭제하고 새 document를 indexing 후 여기에 업데이트를 적용

ID가 1인 이전 document를 업데이트 하기 위해 POST를 사용

curl -XPOST http://localhost:9200/customer/external/1/_update?pretty -d '{ "doc": { "name": "Jane Doe" } }' -H 'Content-type: application/json'

같은 방법으로 새로운 field를 추가하여 update할 수 있음

curl -XPOST http://localhost:9200/customer/external/1/_update?pretty -d '{ "doc": { "name": "Jane Doe", "age": 20 } }' -H 'Content-type: application/json'

간단한 스크립트를 사용하여 update할 수 있음

curl -XPOST http://localhost:9200/customer/external/1/_update?pretty -d '{ "script" : "ctx._source.age += 5" }' -H 'Content-type: application/json'

ctx._source는 update하려는 현재 document

update 이후 변경 결과

{
  "_index" : "customer",
  "_type" : "external",
  "_id" : "1",
  "_version" : 4,
  "_seq_no" : 3,
  "_primary_term" : 1,
  "found" : true,
  "_source" : {
    "name" : "Jane Doe",
    "age" : 25
  }
}

20에서 5가 더해져 25가 된 것을 확인할 수 있음


  • Document delete

ID가 1인 document를 삭제하는 방법

curl -XDELETE http://localhost:9200/customer/external/1?pretty

  • bulk 입력

https://www.elastic.co/guide/kr/elasticsearch/reference/current/gs-batch.html

은 귀찮아서 링크로 대체...

profile
공부한 것들

0개의 댓글