2022. 1. 20. 17:58ㆍ개발이야기/ElasticSearch
Elasticsearch는 http 프로토콜로 접근이 가능한 REST API를 지원합니다.
자원별로 고유 URL로 접근이 가능하며 http 메서드 PUT, POST, GET, DELETE 를 이용해서 자원을 처리합니다.
이 문서는 REST API와 JSON 방식으로 작성하겠습니다.
Elasticsearch에서는 단일 document별로 고유한 URL을 갖습니다. document에 접근하는 기본 URL은
http://<호스트>:<포트>/<인덱스>/_doc/<도큐먼트 id>
구조로 되어 있습니다.
PUT(입력/수정)
데이터 입력 및 수정 할 때는 PUT 메서드를 이용합니다.
다음은 my_index 인덱스에 도큐먼트 id가 1인 데이터를 입력하는 예제입니다.
REQUEST
PUT my_index/_doc/1
{
"name":"jhp",
"message":"Elasticsearch"
}
RESPONSE
{
"_index" : "my_index",
"_type" : "_doc",
"_id" : "1",
"_version" : 1,
"result" : "created",
"_shards" : {
"total" : 2,
"successful" : 1,
"failed" : 0
},
"_seq_no" : 0,
"_primary_term" : 1,
"status" : 201
}
처음으로 도큐먼트를 입력하면 결과에 "result" : "created" 로 표시가 됩니다. 동일한 URL에 다른 내용의 도큐먼트를 다시 입력하게 되면 기존 도큐먼트는 삭제되고 새로운 도큐먼트로 덮어 씌워지게 됩니다. 이 때는 결과에 created가 아닌 updated가 표시됩니다.
REQUEST
PUT my_index/_doc/1
{
"name":"jhp",
"message":"Elasticsearch"
}
RESPONSE
{
"_index" : "my_index",
"_type" : "_doc",
"_id" : "1",
"_version" : 1,
"result" : "updated",
"_shards" : {
"total" : 2,
"successful" : 1,
"failed" : 0
},
"_seq_no" : 0,
"_primary_term" : 1,
"status" : 201
}
POST(입력)
POST 메서드는 PUT 메서드와 유사하게 데이터 입력에 사용이 가능합니다.
도큐먼트를 입력할 때 POST 메서드로 <인덱스>/_doc 까지만 입력하게 되면 자동으로 임의의 도큐먼트id 가 생성됩니다.
도큐먼트id의 자동 생성은 PUT 메서드로는 동작하지 않습니다.
REQUEST
POST my_index/_doc/
{
"name":"forbiz",
"message":"Elasticsearch"
}
RESPONSE
{
"_index" : "my_index",
"_type" : "_doc",
"_id" : "ZuFv12wBspWtEG13dOut",
"_version" : 1,
"result" : "created",
"_shards" : {
"total" : 2,
"successful" : 1,
"failed" : 0
},
"_seq_no" : 0,
"_primary_term" : 1
}
GET(조회)
도큐먼트의 내용을 가져올 때는 GET 메서드를 이용합니다.
다양한 정보가 함께 표시되며 문서의 내용은 _source 항목에 나타납니다.
REQUEST
GET my_index/_doc/1
RESPONSE
{
"_index" : "my_index",
"_type" : "_doc",
"_id" : "1",
"_version" : 2,
"_seq_no" : 1,
"_primary_term" : 1,
"found" : true,
"_source" : {
"name" : "forbiz",
"message" : "Elasticsearch"
}
}
DELETE(삭제)
도큐먼트 또는 인덱스 단위의 삭제를 할 때는 DELETE 메서드를 이용합니다.
도큐먼트 삭제
도큐먼트 id를 URL에 포함시키면 해당 도큐먼트가 삭제됩니다.
REQUEST
DELETE my_index/_doc/1
RESPONSE
{
"_index" : "my_index",
"_type" : "_doc",
"_id" : "1",
"_version" : 3,
"result" : "deleted",
"_shards" : {
"total" : 2,
"successful" : 2,
"failed" : 0
},
"_seq_no" : 2,
"_primary_term" : 1
}
인덱스 삭제
도큐먼트 id를 포함시키지 않고 인덱스만 입력하면 해당 인덱스 전체가 삭제됩니다.
REQUEST
DELETE my_index
RESPONSE
{
"acknowledged" : true
}
'개발이야기 > ElasticSearch' 카테고리의 다른 글
Query DSL / Term-level queries / Term (0) | 2022.03.08 |
---|---|
Query DSL (0) | 2022.03.08 |
Mapping (0) | 2022.01.28 |
Setting (0) | 2022.01.27 |
Analyzer (0) | 2022.01.25 |