References

https://shanepark.tistory.com/108

https://jiseok-woo.tistory.com/11

https://esbook.kimjmin.net/02-install/2.3-elasticsearch/2.3.2-elasticsearch.yml

https://needjarvis.tistory.com/680

https://computer-is-science.tistory.com/2

 

개요

지난 시간, elasticsearch 검색 엔진에 대해 기본적인 개념을 포스팅 한 적이 있다.

따라서, 이번엔 Windows 환경에서 elasticsearch 설치 및 기본 환경 설정에 대해 기술한다.

 

설치

아래의 링크를 통해 버전에 맞는 파일을 zip 확장자로 다운로드 한다.

https://www.elastic.co/downloads/elasticsearch

※ 최근 버전을 다운로드 할 경우 JDK가 최소 11 버전 이상인지 확인한다.

 

실행 테스트

zip 파일을 압축 해제 한 뒤 bin 폴더 경로로 들어간다.

명령 프롬포트(cmd)를 연 뒤 bin 경로 내에 있는 elasticsearch.bat를 실행한다.

[Elasticsearch가 설치된 경로]\\bin>elasticsearch.bat

웹 클라이언트를 킨 뒤 다음과 같은 경로로 elasticsearch가 정상적으로 구동 되는지 확인한다.

<http://localhost:9200/>

※ 만약 별도로 종료하지 않았는데도, 아래와 같은 문구가 뜬다면 환경설정 문제일 수 있으니 재설치를 권장한다.

[2022-07-06T15:58:22,832][INFO ][o.e.n.Node               ] [node-1] stopping ...
[2022-07-06T15:58:22,838][INFO ][o.e.n.Node               ] [node-1] stopped
[2022-07-06T15:58:22,839][INFO ][o.e.n.Node               ] [node-1] closing ...
[2022-07-06T15:58:22,845][INFO ][o.e.n.Node               ] [node-1] closed

 

기본 옵션 변경

elasticsearch 옵션을 변경하고자 한다면 config > elasticsearch.yml 파일을 수정한다.

해당 파일을 열면 여러 기능들을 설정할 수 있는데 옵션은 다음과 같다.

Cluster

cluster.name : 클러스터 이름을 설정한다.

Node

node.name : 노드 이름을 설정한다.

node.ttr.rack : 노드별 속성을 부여하기 위한 namespace를 설정한다.

Paths

path.data : 인덱스 경로를 설정한다. 디폴트의 경우 data 디렉토리에 생성된다.

path.logs : elasticsearch의 노드 및 클러스터에서 생성되는 로그의 저장 경로를 설정한다.

Memory

bootstrap.memory_lock : elasticsearch가 선점한 메모리를 다른 Java 프로그램에서 사용하지 못하도록 막아두는(lock) 기능을 설정한다.

Network

network.host : 노드 IP를 설정한다.

// 단일 IP 설정
network.host: 127.0.0.1

// 여러 IP 설정
network.host: [127.0.0.1, 123.123.123.1]

http.port : 노드 port를 설정한다.

Discovery

discovery.seed_hosts : 활성화된 다른 서버를 찾는 옵션으로, 같은 클러스터로 묶인 노드 IP를 설정한다.

// 단일 IP 설정
discovery.seed_hosts: "127.0.0.1"

// 여러 IP 설정
discovery.seed_hosts: ["127.0.0.1", "[::1]"]

cluster.initial_master_nodes : master 노드에 해당되는 IP를 설정한다.

// 설정한 node.name의 값으로 설정한다
cluster.initial_master_nodes: ["node-1"]

// 여러 node.name들을 설정할 수 있다
cluster.initial_master_nodes: ["node-1", "node-2"]

Various

action.destructive_requires_name : 한번에 여러 인덱스를 삭제할 수 없게 설정한다.