Document API
- index와 document를 다루는 API
- CRUD, 기본적인 설정
PUT
- 데이터를 입력하고자 할 때 사용
PUT jake_index/_doc/1
{
"name":"Jake",
"message":"This is Elasticsearch"
}
-
같은 주소에 도큐먼트 재 입력
PUT jake_index/_doc/1 { "name":"Jake", "message":"This is Kibana" }- 덮어 쓰여지는 것을 확인
-
이것을 방지하고 싶다면 _create를 사용
GET
- 도큐먼트에 있는 데이터를 조회
GET jake_index/_doc/1
DELETE
-
인덱스나 도큐먼트를 삭제할 수 있음
-
도큐먼트 삭제
DELETE jake_index/_doc/1
-
인덱스는 남아있는 상태, 조회하면 도큐먼트를 못 찾았다는 “found” : false 결과 확인
-
전체 인덱스 삭제
DELETE jake_index
- “type” : “index_not_found_exception”
,”status” : 404 확인
POST
-
데이터 입력이 가능한 메서드
-
PUT과 다르게 document id를 자동생성 할 수 있음
POST jake_index/_doc
{
"name":"Jake",
"message":"This is Elasticsearch"
}
- 자동 생성된 id 확인
UPDATE
-
도큐먼트의 수정
-
원하는 필드의 내용만 업데이트가 가능
POST jake_index/_update/1
{
"doc": {
"message":"Hola Kibana"
}
}
- 업데이트가 실제 되었는지, PUT과 다른 점을 확인
Bulk API
- 앞의 API들은 한 번에 하나의 문서만을 대상으로 동작했음
Bulk API를 사용하면 한 번의 API사용으로 다수의 문서를 인덱싱하거나 삭제가 가능- 대량 색인이 필요하다면 사용
POST _bulk
{"index":{"_index":"jake-tmp", "_id":"1"}}
{"field":"the first"}
{"index":{"_index":"jake-tmp", "_id":"2"}}
{"field":"the second"}
{"delete":{"_index":"jake-tmp", "_id":"2"}}
{"create":{"_index":"jake-tmp", "_id":"3"}}
{"field":"the third"}
{"update":{"_index":"jake-tmp", "_id":"1"}}
{"doc":{"field":"the one"}}
GET jake-tmp/_doc/1
Reindex API
- 한 인덱스에서 다른 인덱스로 도큐먼트를 복사할 때 주로 사용
POST _reindex
{
"source": {
"index": "원본 인덱스 명"
},
"dest": {
"index": "재색인할 인덱스 명"
}
}
PUT jake-one
POST _reindex
{
"max_docs": 1000,
"source": {
"index": "jake-tmp"
},
"dest": {
"index": "jake-one"
}
}
-
source 부분에 쿼리를 포함시켜 쿼리 결과에 일치하는 문서만 복사 가능
-
max_docs(size)를 지정할 수 있음, max_docs는 기본적으로 1000건 단위
- 사이즈를 늘리면 많은 문서를 복사할 때 효과적, 전체적인 속도 향상