REST API 개요

  • Elasticsearch는 HTTP 프로토콜 기반의 REST API를 제공합니다.
  • 자원(Resource)마다 고유한 URL을 사용하며, **HTTP 메서드(PUT, POST, GET, DELETE)**로 데이터를 처리합니다.
  • 이러한 시스템을 RESTFul 시스템이라고 합니다.

REST API 방식과 비 REST 방식 비교

방식 요청 방식 예제
비REST 방식 개별 페이지 접근 또는 매개변수 방식 http://user.com/input.jsp?name=kim&age=38&gender=m
RESTFul 방식 단일 URL과 HTTP 메서드 활용 PUT http://user.com/kim -d {"name":"kim", "age":38, "gender":"m"}

예제: 사용자 정보(name=kim, age=38, gender=m) 처리 방식 비교

  비REST 방식 RESTFul 방식
입력 http://user.com/input.jsp?name=kim&age=38&gender=m PUT http://user.com/kim -d {"name":"kim", "age":38, "gender":"m"}
조회 http://user.com/get.jsp?name=kim GET http://user.com/kim
삭제 http://user.com/delete.jsp?name=kim DELETE http://user.com/kim

Elasticsearch REST API 활용

(1) 클러스터 정보 조회

  • HTTP 요청 방법: GET http://localhost:9200
  • curl 명령어 사용 예제
    curl -XGET "http://localhost:9200"
    
  • 응답 예시 (JSON)
    {
      "name" : "Jongminui-MacBook-Pro.local",
      "cluster_name" : "elasticsearch",
      "cluster_uuid" : "hpmT8TPiR1Kk69YNao9V3w",
      "version" : {
        "number" : "7.3.0",
        "build_flavor" : "default",
        "build_type" : "tar",
        "build_hash" : "de777fa",
        "build_date" : "2019-07-24T18:30:11.767338Z",
        "lucene_version" : "8.1.0"
      },
      "tagline" : "You Know, for Search"
    }
    
  • 응답 정보 설명
    필드명 설명
    name 노드명
    cluster_name 클러스터명
    cluster_uuid 클러스터 고유 ID
    version.number Elasticsearch 버전
    lucene_version Lucene 버전
    tagline 기본 태그라인

Kibana Dev Tools

  • REST API를 쉽게 실행하기 위한 도구
  • Kibana 실행 방법
    1. Elastic 공식 웹사이트에서 Kibana 다운로드: https://www.elastic.co
    2. 압축 해제 후 실행
      • 리눅스/Mac: bin/kibana
      • 윈도우: bin/kibana.bat
    3. 기본 실행 포트: 5601
    4. 실행 후 웹 브라우저에서 접속: http://localhost:5601
  • 설정 파일 (kibana.yml) 수정
    • Elasticsearch가 다른 호스트에서 실행될 경우: 
    • elasticsearch.url: "http://localhost:9200"
    • Kibana 실행 포트를 변경하려면:
      server.port: 5601
      
  • Dev Tools 주요 기능
    기능 설명
    쿼리 자동 완성 API 호출 시 자동 완성 기능 제공
    호스트 경로 자동 적용 기본적으로 http://localhost:9200를 사용
    curl 명령 복사 기능 입력한 명령을 curl 명령어로 변환 가능

REST API를 활용한 Elasticsearch 데이터 조작

작업 HTTP 메서드 예제
문서 생성/업데이트 PUT PUT http://localhost:9200/index/_doc/1 -d '{"name":"kim", "age":38}'
문서 조회 GET GET http://localhost:9200/index/_doc/1
문서 삭제 DELETE DELETE http://localhost:9200/index/_doc/1
검색(Query DSL 사용) POST POST http://localhost:9200/index/_search -d '{"query": {"match": {"name": "kim"}}}'

추가적으로 알아야 할 내용

개념 설명
Index 관계형 DB의 "테이블" 개념
Document 하나의 데이터 레코드 (JSON 형식)
Shard & Replica 데이터를 분산 저장하고 백업하는 구조
Query DSL Elasticsearch의 강력한 검색 기능을 지원하는 JSON 기반의 질의 언어

정리

  • Elasticsearch는 HTTP REST API를 활용하여 데이터를 관리합니다.
  • RESTFul 방식을 사용하여 단일 URL과 HTTP 메서드(GET, PUT, DELETE 등)로 요청을 처리합니다.
  • curl 명령어를 이용하여 쉽게 API 요청을 보낼 수 있습니다.
  • Kibana Dev Tools를 활용하면 REST API 호출을 간편하게 실행할 수 있습니다.
  • 문서 조회, 생성, 수정, 삭제 등의 작업은 REST API를 통해 JSON 기반으로 수행됩니다.

 

+ Recent posts