본문 바로가기
IT/Elasticsearch

Elasticsearch REST API 사용하기(인덱스, 도큐먼트 CRUD)

by twofootdog 2020. 4. 4.

Elasticsearch에서 인덱스(index)와 도큐먼트(document)를 조회/등록/변경/삭제 등을 수행하기 위해서는 REST API를 호출하게 된다. 이번 글에서는 Elasticsearch에서 사용하는 API에 대해 알아보고자 한다.

 

 

1. 인덱스(Index) 관리

1-1. 클러스터에 존재하는 인덱스 전체 조회

클러스터에 존재하는 전체 인덱스를 조회한다. 보통 엘라스틱서치를 처음 설치하고 조회를 하게 되면 아무것도 나오지 않는다(필자의 엘라스틱서치에는 이미 인덱스가 존재하기 때문에 아래처럼 나온 것이다). 

인덱스의 상태(yellow, green)과 인덱스명, 샤드갯수와 크기 등을 확인할 수 있다. 

# curl -XGET '[엘라스틱서치ip:port]/_cat/indices?v'

 

 

1-2. 인덱스 생성 & 조회 & 삭제

신규 인덱스를 생성하고 조회한다. API를 호출할 때 뒤에 ?pretty를 붙이게 되면 API 호출 결과를 보기 쉽게 정렬할 수 있다.

# curl -XPUT '[엘라스틱서치ip:port]/[index명]?pretty'
# curl -XGET '[엘라스틱서치ip:port]/[index명]?pretty'
# curl -XDELETE '[엘라스틱서치ip:port]/[index명]?pretty'

 

 


2. 도큐먼트(Document) 관리

2-1. 인덱스에 신규 도큐먼트 등록

인덱스에 신규 도큐먼트를 등록한다. 도큐먼트를 등록할 때는 POST API를 활용한다. 원래 기존의 엘라스틱서치에서는 도큐먼트를 등록할 때 URL을 [Elasticsearch IP]:[Elasticsearch PORT]/[index명]/[type명]/[id] 로 호출했는데 엘라스틱서치 7.0부터는 Type이 완전이 사라졌기 때문에 URL을 [Elasticsearch IP]:[Elasticsearch PORT]/[index명]/[_doc]/[id] 로 호출한다고 한다.

도큐먼트를 등록할 때는 -H 옵션 뒤에 해더값을 입력하고, -d 옵션 뒤에 body값을 입력한다. body는 직접 입력해도 되지만, json파일을 생성한 후 -d @[json파일명] 으로도 등록 가능하다.

또한 미존재하는 인덱스에 신규 도큐먼트를 등록할 경우 인덱스가 생성되면서 도큐먼트도 같이 등록되게 된다.

# curl -XPOST '[엘라스틱서치ip:port]/[index명]/_doc/[id]?pretty' -H 'Content-type:application/json' -d '{"name": "leejangwoo"}'
# curl -XPOST '[엘라스틱서치ip:port]/[index명]/_doc/[id]?pretty' -H 'Content-type:application/json' -d @[json파일명]

 

 

2-2. 인덱스 내 도큐먼트 목록 조회

인덱스 내 도큐먼트 목록은 URL에 /[index명]/_search 를 붙여서 조회할 수 있다. 

# curl -XGET '[엘라스틱서치ip:port]/[index명]/_search?pretty'

 

 

2-3. 특정 도큐먼트 조회

id를 입력하여 특정 도큐먼트 정보 조회도 가능하다.

# curl -XGET '[엘라스틱서치ip:port]/[index명]/_doc/1?pretty'

 

만약 실제 입력한 데이터인 _source 필드만 보고 싶다면 query string에 filter_path=_source를 추가한다.

# curl -XGET '[엘라스틱서치ip:port]/[index명]/_doc/1?pretty&filter_path=_source'
# curl -XGET '[엘라스틱서치ip:port]/[index명]/_doc/1?pretty&filter_path=_source.name'

 

 

2-3. 특정 도큐먼트 수정

도큐먼트 수정은 도큐먼트 등록과 유사하다. 존재하는 id값에 POST나 PUT API를 날리면 수정된다.

# curl -XPOST '[엘라스틱서치ip:port]/[index명]/_doc/[id]?pretty' -H 'Content-type:application/json' -d '{"name": "kangsang"}'
# curl -XPUT '[엘라스틱서치ip:port]/[index명]/_doc/[id]?pretty' -H 'Content-type:application/json' -d '{"name": "kangmin"}'

 

 

2-3. 특정 도큐먼트 삭제

특정 id의 도큐먼트를 삭제할 수 있다.

# curl -XDELETE '[엘라스틱서치ip:port]/[index명]/_doc/[id]?pretty'

 

 

 


참고

https://www.elastic.co/guide/en/elasticsearch/reference/current/rest-apis.html

 

REST APIs | Elasticsearch Reference [7.6] | Elastic

We are working on including more Elasticsearch APIs in this section. Some content might not be included yet.

www.elastic.co

https://brunch.co.kr/@alden/43

 

ElasticSearch status 바로 알기

ElasticSearch | 오늘은 ElasticSearch (이하 ES)의 status 에 대한 이야기를 해볼까 합니다. ES의 status는 무엇을 의미하는지, 그리고 어떤 값들이 있으며 어떻게 확인할 수 있는지 살펴보겠습니다. ES status 확인하기 ES는 status라는 것으로 현재 클러스터의 상태를 표시합니다. 아래와 같이 cat API를 사용하면 손쉽게 클러스터의 상태

brunch.co.kr

https://victorydntmd.tistory.com/312?category=742451

 

[Elasticsearch] 입문하기(2) - 기본 API( index, document CRUD )

1. Index, Type, Document 이전 글에서 Cluster에 대해 알아보았습니다. Cluster는 node들의 집합이고 노드는 shard로 구성되며, 데이터는 shard로 분산되어 저장합니다. Index는 1개 이상의 primary shard에 매핑..

victorydntmd.tistory.com

 

'IT > Elasticsearch' 카테고리의 다른 글

Elasticsearch 개념 및 구조  (0) 2020.04.01

댓글