Apple Silicon macOS에서 elasticsearch 설치하기
연구 내용중 검색관련 실험에 Elasticsearch 사용이 필요하게 되었다. Apple Silicon macOS에서 Homebrew를 이용하여 Elasticsearch를 설치하는 내용을 소개한다.

연구를 진행하다 Elasticsearch를 사용이 필요해졌다. 지금까지 검색엔진으로 Elasticsearch를 많이 들어왔지만 실제 업무에 직접적으로 사용할 일은 없었는데, 이번 연구내용에서 Elasticsearch를 사용해서 테스트하는 기회가 생겨 앞으로 관련 내용을 포스팅할 것 같다.
Elasticsearch 소개는 공식문서를 참고하는게 가장 좋다.
Elasticsearch를 MacOS에 설치하는 방법은 여러가지가 있다. 가장 쉽게 빠르게 사용하는 방법은 docker를 이용하는 방법이다. tar를 이용하여 설치할 수 있지만, macOS에서 Homebrew Taps를 사용하여 설치할 수 있다. Homebrew는 macOS용 누락 패키지 관리자이다. Homebrew는 macOS에서 유연하고 손쉽게 소프트웨어 설치를 관리할 관리할 수 있는 방법을 제공하고 있다. Homebrew의 Tap을 이용하여 써드파티 소프트웨어를 추가할 수 있는데 Elastic에서 Elastic Homebrew Taps을 통해 elastic 패키지를 관리할 수 있게 제공하고 있다.
Homebrew 에서 elasticsearch를 찾아보기 위해서 brew search
명령어로 찾아볼 수 있다.
brew search elasticsearch-full

brew tap
명령어로 원하는 tap을 선택할 수 있다.
brew tap elastic/tap
이 글을 작성할 때 Elasticsearch 가장 최신버전은 8.17 버전인데 8.17 버전은 공식적으로 Homebrew에서 설치하는 방법을 제공하지 않고 있다. 그래서 우리는 7.17 버전을 공식문서를 참고하여 설치하도록 한다.
brew install elastic/tap/elasticsearch-full

Elasticsearch 는 Java를 사용하는데 이미 Java를 설치했다면 설치된 JDK을 사용하고 아닐 경우 번들로 들어있는 JDK를 사용한다. elasticsearch 번들 JDK는 OpenJDK를 사용하는데 기존에 macOS에 Oracle Java를 설치했기 때문에 Oracle JDK를 사용한다. 다음 명령어를 이용하여 Elasticsearch를 실행하면 환경설정과 필요한 모듈을 로드하는 것을 볼 수 있다.
elasticsearch

여러가지 필요한 모듈을 로드하는 과정에서 다음과 같이 에러를 발생하면서 실행되지 않는다.
org.elasticsearch.bootstrap.StartupException: 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는 단순 검색엔진 기능외 여러가지 모듈을 추가해서 다양한 기능을 제공하는데 이 에러는 macOS 운영체제에 사용할 수 없는 라이브러리가 있다고 에러가 발생했다. 문제되는 패키지는 머신러닝 관련 ML 패키지이다. 이 모듈을 사용하여 elasticsearch ML API를 사용할 수 있다. 이 문제를 해결하는 방법은 macOS에서 ML 확장팩을 사용하지 않도록 하는 것이다.
Homebrew로 설치된 elasticsearch의 설정 파일은 /opt/homebrew/etc/elasticsearch/elasticsearch.yml
경로에 존재하기 때문에 이 파일을 열어서 xpack.ml.enabled:false
를 추가한다.
vi /opt/homebrew/etc/elasticsearch/elasticsearch.yml

다시 elasticsearch
명령어를 사용하여 실행하면 ml 패키지외 문제 없이 모든 확장패키지가 로드되고 정상적으로 실행이 된다.
정상적으로 실행된 것을 확인하기 위해서 다른 터미널을 열어서 curl
을 사용하여 확인하거나 브라우저로 바로 확인할 수 있다.
curl -s http://localhost:9200

브라우저에서 확인할 때는 http://localhost:9200 로 접속하면 된다.

하지만 머신러닝 확장 모듈 ML을 비활성화 사용하는 것에 대해 이 기능을 사용할 수 없기 때문에 이 문제를 해결하기 위한 방법을 앞으로 찾아볼 예정이다.
Elasticsearch를 사용하고자 하는 이유가 Vector 검색 기능을 사용하기 위함이라 ML 비활성화로 벡터검색에 영향이 있는지 확인이 필요하다. 앞으로 Elasticsearch 를 사용해서 연구하면서 관련 내용을 포스팅할 예정인데, 벡터검색과 ML에 대한 기능을 사용해보고 포스팅할 예정이다.
질문 및 의견을 남겨주세요 >