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
https://brunch.co.kr/@alden/43
https://victorydntmd.tistory.com/312?category=742451
'IT > Elasticsearch' 카테고리의 다른 글
Elasticsearch 개념 및 구조 (0) | 2020.04.01 |
---|
댓글