[Elasticsearch] Plugin 설치 및 적용
이번 포스팅은 엘라스틱서치 플러그인 사용과
실제 검색 시 적용되는 예제에 관한 포스팅입니다.
"이미지 검색에 관한 검색엔진을 만드는 데 사용하는 벡터 검색 플러그인"
1. 적용 할 플러그인 검색
- 이번 벡터 검색에 사용 할 엘라스틱 검색 플러그인
https://github.com/lior-k/fast-elasticsearch-vector-scoring
- embedding-vector를 기반으로 하는 엘라스틱 문서에 코사인 유사도 검색을 사용하여 검색할 수 있게 하는 플러그인
- 엘라스틱 버전에 따라 브런치들이 따로 있으니 해당 버전에 맞는 브런치를 git clone 받아야함
2. 플러그인 사용 튜토리얼
[ Trouble Shooting ]
- $ git clone https://github.com/lior-k/fast-elasticsearch-vector-scoring
- 처음에 위와 같은 방식으로 git clone을 받음
- 특정 브런치를 다운 받지 않아 기본 버전인 5.6.9가 다운 받아짐
- 버전에 맞는 플러그인을 다운로드 하려면 브런치를 지정해야함
1> 7.5.0 버전으로 엘라스틱 플러그인 깃 클론 진행
# 깃이 설치되어 있지 않다면 깃 설치
$ apt install git
# 아래와 같이 브런치 지정해서 깃 클론 진행
git clone -b es-7.5.0 https://github.com/lior-k/fast-elasticsearch-vector-scoring.git
[ Trouble Shooting ]
- 엘라스틱 & 플러그인의 버전에러
- 현재 설치되어있는 엘라스틱 버전은 7.5.1이고 다운 받은 플러그인은 7.5.0버전이여서 플러그인 설치 시 에러 발생
- 0.0.1 버전이 안맞아서 벡터 검색 플러그인을 사용 할 수 없다는 사실에 절망 후, 엘라스틱 다운그레이드를 고려함
- 현재 구성한 엘라스틱 서버가 마스터1, 데이터2인데 3개의 서버를 다운그레이드를 하는 건 절망적이라 다른 방법을 찾아봄
- 아래와 같이 깃 Issue에서 희망을 발견
- 누군가 7.2.1 버전이 필요해서 new branch를 만들었다고 함. (크게 어렵지 않음을 말함)
- 위 질문과 답을 보고 희망을 얻어, 두 버전의 파일을 모두 열어 변경 된 부분을 찾아다님
- 정말 너무 간단하게도 다른 코드는 다 같고 pom.xml의 버전만 변경해주면 되는 문제!
2> pom.xml 파일 수정
# 해당 폴더로 접근
$ cd fast-elasticsearch-vector-scoring
# 설정 파일로 접근
$ vi /fast-elasticsearch-vector-scoring/pom.xml
- 위 파일에 들어가서 7.5.0으로 되어있는 버전을 원하는 버전으로 변경해주면 됨(7.5.1)
- 2곳을 변경하면 끝!
3> 패키지 생성
# mvn이 없을 경우 설치
$ apt install mvn
# 패키지 생성
$ mvn package
- mvn package 명령어는 pom.xml이 있는 곳에서 해야함
- 위 2 명령어 입력 후 에는 폴더와 파일들이 생성 됨
- .zip 파일 위치 : /fast-elsticsearch-vector-scoring/target/releases/elasticsearch-binary-vector-scoring-7.5.1.zip
- 버전을 보면 원하는 대로 zip파일이 생성 됨을 확인 할 수 있음
4> 플러그인 적용
$ cd /usr/share/elasticsearch
- 데비안 패키지로 설치한 엘라스틱의 기본 설정 파일 위치로 이동 : /usr/share/elasticsearch
$ bin/elasticsearch-plugin install file:///fast-elasticsearch-vector-scoring/target/releases/elasticsearch-binary-vector-scoring-7.5.1.zip
- 플러그인을 설치 하기 위해 bin/elasticsearch-plugin install 입력
- 바로 옆에 따라서 파일이 존재하는 곳 명시 file://경로/.zip파일
5> 엘라스틱 서치 재시작
$ systemctl restart elasticsearch
- 엘라스틱 서치 재시작을 하면 바로 적용이 됨
- 데이터 노드 2곳에 각각 플러그인 설치 완료