ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 02. 엘라스틱서치 설치
    BackEnd/elasticsearch 2021. 9. 18. 18:00
    반응형

      엘라스틱서치 노드 하나만으로 구성된 클러스터를 싱글 모드(Single Mode) 또는 테스트 모드(Test Mode)라고 합니다.

     

    1. 자바 설치(JDK 1.8 버전 이상)

      엘라스틱서치는 자바 언어로 개발된 프로그램으로 동작하기 위해서는 자바 런타임이 필요합니다. JRE(Java Runtime Environment)만 설치해도 무방하지만 JDK(Java Development Kit)를 설치하는 것이 좋습니다.

      자바 언어는 8버전으로 버전업되면서 함수형 프로그래밍이 도입되었습니다. 함수형 프로그래밍을 위해 언어 차원에서 스트림(Stream)과 람다(Lambda) 표현식이 지원되기 시작했습니다.

      기존의 멀티 스레드 기반의 프로그래밍은 하나의 CPU를 효율적으로 사용하기 위한 방식이 대부분이었기 때문에 다수의 CPU가 탑재된 환경에서는 오히려 비효율적인 경우가 종종 발생했습니다. 그러나 자바8의 스트림을 이용하면 언어 차원에서 손쉽게 멀티 코어로 함수를 동작시킬 수 있습니다. 람다를 이용해 로직을 작성하고 스트림에 입력하면 다수의 CPU에서 동시에 데이터가 처리되고 모든 CPU에서 처리가 끝날 때까지 결과를 기다리게 됩니다. 이후 결과가 나오면 모든 결과를 하나로 모아서 돌려줍니다. 일종의 맵리듀스(Map-Reduce)로 동작하게 되는 것입니다.

     

    2. 엘라스틱서치 설치

    macOS와 리눅스 윈도우
    ./elasticsearch 1) 명령 프롬프트 실행
    2) 엘라스틱서치 경로로 이동
    3) bin 폴더 내 elasticsearch.bat 실행
    엘라스틱서치 접속 : http://localhost:9200/
    콘솔 또는 명령 프롬프트 창에서 Ctrl + C를 눌러 프로세스 종료

    3. 예제 인덱스 스냅숏

      스냅숏 압축 파일을 다운받아 적절한 경로에 풀어줍니다. 스냅숏을 이용하면 백업된 데이터를 로컬에 설치된 엘라스틱서치로 손쉽게 복구할 수 있습니다. 나중에 필요한 곳에서 스냅숏을 이용해 인덱스를 복구하여 사용합니다.

     

    4. 예제 프로젝트

      document 디렉터리에서 쿼리와 결과를 확인할 수 있습니다.

     

    5. 엘라스틱서치 설정 정보

      설치 디렉터리의 config 디렉터리 하위 elasticsearch.yml 파일을 수정해 변경할 수 있습니다. config 디렉터리는 기본 설정 정보를 변경하는 것 외에도 사전 등의 정보를 설정할 때도 사용됩니다.

    설정 항목 정의
    cluster.name 클러스터로 여러 노드를 하나로 묶을 수 있는데, 여기서 클러스터명을 지정할 수 있다.
    node.name 엘라스틱서치 노드명을 설정한다.
    path.data 엘라스틱서치의 인덱스 경로를 지정한다. 설정하지 않으면 기본적으로 엘라스틱서치 하위의 data 디렉터리에 인덱스가 생성된다.
    path.logs 엘라스틱서치의 노드와 클러스터에서 생성되는 로그를 저장할 경로를 지정한다. 기본 경로는 /path/to/logs다.
    path.repo 엘라스틱서치 인덱스를 백업하기 위한 스냅숏의 경로를 지정한다.
    (1) 리눅스 환경
      path.repo: ["book_backup/search_example","..."]
    (2) 윈도우 환경
      path.repo: ["C:\\book_backup\\search_example","..."]
    network.host 특정 IP만 엘라스틱서치에 접근하도록 허용할 수 있다. 선택적으로 IP를 허용해야 할 경우 [1.1.1.1, 2.2.2.2]와 같이 지정하고, 모든 IP를 허용한다면 0.0.0.0을 지정하면 된다. IP 값으로 127.0.0.1을 설정하면 개발(Develop) 모드에서 프로덕트(Product) 모드로 자동으로 변경된다.
    http.port 엘라스틱서치 서버에 접근할 수 있는 HTTP API 호출을 위한 포트 번호를 지정한다. 기본값은 9200이다.
    transport.tcp.port 엘라스틱서치 클라이언트가 접근할 수 있는 TCP 포트다. 기본값은 9300이다.
    discovery.zen.ping.unicast.hosts (6.x 이전 버전)
    discovery.seed_hosts (7.0 부터 추가된 기능)
    노드가 여러 개인 경우 유니캐스트(Unicast)로 활성화된 다른 서버를 찾는다. 클러스터로 묶인 노드(서버)의 IP를 지정하면 된다. [1.1.1.1, 2.2.2.2]
    discovery.zen.minimum_master_nodes 마스터 노드의 선출 기준이 되는 노드의 수를 지정한다.
    node.master 마스터 노드로 동작 여부를 지정한다.
    node.data 데이터 노드로 동작 여부를 지정한다.

    [elasticsearch.yml 설정 변경 > 설정 변경 후 엘라스틱서치 재시작]

    cluster.name: elasticsearch-cluster
    node.name: elasticsearch-node
    network.host: 0.0.0.0
    discovery.seed_hosts: 0.0.0.0

    http.port: 9200
    transport.tcp.port: 9300
    node.master: true
    node.data: true
    path.repo: ["C:\\elasticsearch\\snapshot\\book_backup\\agg_example","C:\\elasticsearch\\snapshot\\book_backup\\search_example"]

    반응형

    'BackEnd > elasticsearch' 카테고리의 다른 글

    06. 메타 필드(Meta Fields)  (0) 2021.09.19
    05. 매핑 API  (0) 2021.09.19
    04. 용어  (0) 2021.09.19
    03. 키바나 설치(kibana)  (0) 2021.09.18
    01. 엘라스틱서치(elasticsearch)  (0) 2021.09.18

    댓글

Designed by Tistory.