MacOS에 Elasticsearch 설치하기

..·2024년 6월 18일
0

Elasticsearch

목록 보기
2/7

Elasticsearch 설치하기

MacOS에서는 Homebrew를 이용하여 Elasticsearch를 설치할 수 있다.


1. Homebrew tap

Elasticsearch를 설치하기 전에 Homebrew에서 tap하는 과정이 필요하다.
tap을 통해 Homebrew가 설치할 수 있는 repository를 추가하는 것이다.

brew tap elastic/tap

2. Elasticsearch Install

brew install elastic/tap/elasticsearch-full

위의 명령어를 통해 최신 버전의 Elasticsearch를 성공적으로 설치했다.

3. Elasticsearch 실행하기

brew services start elastic/tap/elasticsearch-full

Elasticsearch의 기본 포트는 9200이다.
curl -X GET localhost:9200로 요청을 전달하면 설치된 Elasticsearch의 정보를 얻을 수 있다고 했다.

4. 서버 연결 오류

curl: (7) Failed to connect to localhost port 9200 after 0 ms: Couldn't connect to server

성공적으로 실행했다고 메시지가 뜨긴 하는데 localhost:9200으로 요청하면 서버가 연결되지 않았다는 문구가 떴다.

5. 해결 과정

설치된 내용을 확인하고 싶었는데 서버 연결이 되지 않아서 다양한 방법을 시도했다.

network.host 변경하기

/opt/homebrew/etc/elasticsearch/elasticsearch.yml의 설정 중에서 network.host라는 항목이 있는데, 기본적으로 주석 처리가 되어있다. 이 부분의 주석을 해제하고, 127.0.0.1 또는 0.0.0.0으로 변경해서 문제를 해결했다는 경우를 발견해서 적용해 봤다. 수정한 이후에 Elasticsearch를 실행했을 때, 여전히 같은 성공 문구와 같은 서버 연결 오류가 발생했다.

Elasticsearch를 실행하는 다른 명령어의 발견

brew services start elastic/tap/elasticsearch-full

기존에 사용하던 brew services start 명령어는 백그라운드로 실행하는 것이라면 elasticsearch라는 명령어로도 실행할 수 있다는 것을 알게 되었다. 해당 명령어를 사용하니 이번에는 새로운 문제가 발생했다.

문제 1. ES_JAVA_HOME 권장

오류까지는 아니었는데, elasticsearch를 실행하니까 JAVA_HOME을 사용하지 말고 ES_JAVA_HOME을 사용하라는 경고 문구를 확인했다.
~/.zshrcES_JAVA_HOME이라는 새로운 환경 변수를 추가했다.

문제 2. Bootstrap 설정 오류

bootstrap checks failed. you must address the points described in the following [1] lines before starting elasticsearch.

ES_JAVA_HOME 환경 변수를 추가한 이후에 발견한 또 다른 오류이다.
알고 보니까 elasticsearch.yml에서 network.host를 주석 해제하는 순간 외부의 연결을 허용하면서 bootstrap을 사용하려고 하느라 발생한 오류였던 것이었다.
... 다시 주석 설정했다.

문제 3. 머신 러닝 설정 오류

ElasticsearchException[Failure running machine learning native code. This could be due to running on an unsupported OS or distribution, missing OS libraries, or a problem with the temp directory. To bypass this problem by running Elasticsearch without machine learning functionality set [xpack.ml.enabled: false].]

Elasticsearch에서 지원하는 머신 러닝 기능이 활성화되었는데, 이것에 대한 설정을 하나도 적용하지 않은 상태여서 발생한 오류였다.
당장은 사용하지 않으니 elasticsearch.ymlxpack.ml.enabled: false를 추가로 작성하여 오류를 해결했다.

6. 성공!

Elasticsearch 실행

elasticsearch

Elasticsearch 실행 정보 확인하기

curl -X GET localhost:9200

문제들을 해결하고 성공적으로 Elasticsearch에 대한 정보를 확인할 수 있었다.



마무리

참고한 문서도 그렇고 다들 설치 후에 쉽게 설치 정보를 확인하고 다음 단계로 넘어가는데 어쩌다 보니 나는 시작부터 이런저런 문제들과 마주하게 됐다.
이렇게 해결하고 나면 별것 아니었네 싶은 문제들을 마주할 때마다 같은 문제라도 해결에 정답은 없는 것 같다는 생각이 든다.

Elasticsearch는 network.host를 통해 외부 IP와의 연결을 지원한다.
network.host의 주석을 해제하거나 새로운 IP를 선언하면 동시에 Bootstrap을 포함한 다양한 기능들을 함께 사용한다고 인식되니 사용하지 않는 항목에 대한 설정과 예외 처리가 필요하다.

성공적으로 설치를 마쳤으니 SpringBoot에서 Elasticsearch를 이용하여 검색하는 기능을 구현하는 것을 공부할 예정이다.

참고

Install Elasticsearch on macOS with Homebrew

1개의 댓글

comment-user-thumbnail
2024년 10월 24일

감사합니다

답글 달기