REST API

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