- cURL 명령어를 사용해서 API 요청 보내기
- 포스트맨을 사용해서 API 요청 보내기
- Kibana를 사용해서 API 요청 보내기
엘라스틱서치는 ReSTful APIs를 지원해요. 엘라스틱서치에 HTTP를 사용해 API 요청을 보내는 것을 해보아요.
https://www.elastic.co/guide/en/elasticsearch/reference/current/rest-apis.html
HTTP를 사용해서 API 요청을 보내는 방법은 많지만 세가지만 확인해 볼게요.
cURL 명령어를 사용해서 API 요청 보내기
대부분의 리눅스에는 cURL이 기본적으로 설치되어 있어요.
엘라스틱서치 설치 확인을 하면서 이미 사용해 봤지만 다시 한번 볼게요.
xodwk@test-dokr ~ curl 'localhost:9292/_cat'
=^.^=
/_cat/allocation
/_cat/shards
/_cat/shards/{index}
/_cat/master
/_cat/nodes
/_cat/tasks
/_cat/indices
/_cat/indices/{index}
/_cat/segments
/_cat/segments/{index}
...
엘라스틱서치에서 CAT 이라는 API가 제공하는 APIs 리스트를 쭉 보여주네요.
위 명령어는
curl -X GET 'localhost:9292/_cat' 으로 바꿔 쓸 수도 있어요.
-X GET은 생략이 가능하다는 거죠.
https://www.elastic.co/guide/en/elasticsearch/reference/current/cat.html
다른 API도 한 번 볼까요? 이번에는 인덱스를 생성해볼게요.
xodwk@test-dokr ~ curl -X PUT 'localhost:9292/books'
{"acknowledged":true,"shards_acknowledged":true,"index":"books"}
xodwk@test-dokr ~ curl -sX GET 'localhost:9292/books' | jq
{
"books": {
"aliases": {},
"mappings": {},
"settings": {
"index": {
"routing": {
"allocation": {
"include": {
"_tier_preference": "data_content"
}
}
},
"number_of_shards": "1",
"provided_name": "books",
"creation_date": "1630907787609",
"number_of_replicas": "1",
"uuid": "qx1N_YTKQNinXZhTK61rbA",
"version": {
"created": "7140199"
}
}
}
}
}
이렇게 books라는 이름의 인덱스를 생성하고 확인까지 해봤어요. jq는 json 포맷을 이쁘게 들여 쓰기 해서 보여주는 프로그램이에요.
이렇게 빈 인덱스를 만들어봤어요. 그럼 여기에 도큐먼트를 하나 추가해볼까요?
xodwk@test-dokr ~ curl -sX POST 'localhost:9292/books/_doc' -H 'Content-Type: application/json' -d '
{"title": "The Lord of the Rings",
"price": 24.0,
"rating": 5.0
}' | jq
{
"_index": "books",
"_type": "_doc",
"_id": "VJ27uXsBdeXf7V-fDB80",
"_version": 1,
"result": "created",
"_shards": {
"total": 2,
"successful": 1,
"failed": 0
},
"_seq_no": 2,
"_primary_term": 1
}
curl 명령어로 JSON 포맷의 POST Request를 작성하는 방법은 위와 같아요.
-H 옵션으로 헤더에 'Content-Type: application/json'을 주고 -d 옵션으로 데이터를 홑 따옴표나 큰따옴표로 묶어서 보내요.
그리고 여기에서는 응답 값을 보기 좋게 하기 위해 jq를 사용하였어요.
그냥 GET 요청만 보낼 때는 명령어 한 줄로 간편하게 요청을 보낼 수 있었는데 JSON형태로 데이터를 넣어서 요청을 보내는 건 여간 번잡스러운 게 아니네요. 그럼 HTTP Request를 보낼 수 있는 다른 옵션을 알아보아요.
포스트맨을 사용해서 API 요청 보내기
포스트맨은 아주 유명한 툴이에요. 혹시 모르셨다면 포스트맨이 좀 더 분발해야겠네요.

포스트맨을 사용해서 POST 요청을 보내는 그림이에요. POST 요청을 보낼 거니까 POST를 선택해주고 엘라스틱서치가 설치된 주소:포트번호를 넣고 /인덱스이름/_doc로 주소를 설정해요. 그리고
아래 Content-Type을 application/json으로 설정 후 Headers 옆에 Body를 선택해주세요.


그리고 raw를 선택하고 우측 드롭다운 메뉴에서 JSON을 선택해주세요. 그리고 아래 텍스트 필드에 내용을 넣어보세요.
그리고 Send버튼을 누르면 포스트맨이 POST 요청을 보내주고 두 번째 그림처럼 응답을 받아오는 것을 볼 수 있어요.

GET 요청을 보낼 수도 있어요. 이렇게. 포스트맨이 좋은 건 작성했던 API Request가 기록으로 남아서 다시 사용할 수 있어요.
그럼 마지막으로 Kibana를 사용해서 API 요청을 하는 것을 알아봐요.
Kibana를 사용해서 API 요청 보내기
엘라스틱서치와 함께 키바나를 설치했다면 키바나가 설치된 [호스트주소]:[키바나 포트]로 웹을 통해 접속하면 아래와 같은 화면을 볼 수 있어요.

여기에서 Dev Tools라는 곳을 클릭하면 아래와 같은 화면이 나오고 왼쪽에 아까 포스트맨에서 데이터로 입력했던 것을 아래와 같이 적어주소 오른쪽에 세모 모양 버튼을 눌러주면 요청이 가게 돼요.

키바나 Dev Tools에서도 한 번 사용했던 요청을 다시 사용할 수 있어요.
이렇게 세 가지 엘라스틱서치에 API 요청을 보낼 수 있는 방법을 알아봤어요.
다음에는 인덱스에 대해서 조금 더 공부해볼게요.