본문 바로가기

ELK7

Elasticsearch를 이용한 문서 유사도 검색과 Springboot를 통한 구현 (설정편)(2) 지난번 게시글에 이어서 (약..반년만에 글을 쓰는것 같은..) 스프링부트에서 어떻게 Elasticsearch를 이용해 유사도를 활용한 검색을 하는지 작성하겠다. 기본적으로 지난 글 내용을 참조하여서 특정 필드에 대해서 유사도를 계산하는 인덱스를 만들어줘야 한다. 공식 DOC을 찾아보면 쉽게 찾아서 적용시킬 수 있으며 검색할때 사용하는 analyzer도 반드시 지정해줘야 한다.(tokenizer를 이용해서 나오는 결과는 추후에 첨부하도록 하겠다.) 아무튼.. 인덱스 설정 및 생성을 완료하였다면 이젠 엘라스틱서치로 요청을 할 차례이다. 기본적으로 ES는 json을 이용해 HTTP Method인 Get, Post, Delete, Put을 이용해 모든 요청 받고 리턴해주게 된다. 그런데..사실 검색을 할 때에 .. 2020. 12. 2.
Elasticsearch를 이용한 문서 유사도 검색과 Springboot를 통한 구현 (1) 문서 유사도? 기본적으로 문서가 얼마나 유사하는가에 대한 계산은 Cosine 유사도로 판단하게 된다. 그 이전에 사용하는 개념이 tf-idf인데 그 설명은 위키피디아에 다음과 같이 설명되어 있다. TF-IDF(Term Frequency - Inverse Document Frequency)는 정보 검색과 텍스트 마이닝에서 이용하는 가중치로, 여러 문서로 이루어진 문서군이 있을 때 어떤 단어가 특정 문서 내에서 얼마나 중요한 것인지를 나타내는 통계적 수치이다. 문서의 핵심어를 추출하거나, 검색 엔진에서 검색 결과의 순위를 결정하거나, 문서들 사이의 비슷한 정도를 구하는 등의 용도로 사용할 수 있다. TF(단어 빈도, term frequency)는 특정한 단어가 문서 내에 얼마나 자주 등장하는지를 나타내는 값.. 2020. 9. 5.
logstash deactivating (stop-sigterm) 해결방법 프로젝트를 하려고 Mysql과 Elasticsearch를 연동해주기 위해 logstash를 이용해서 pipeline을 만드려 주려고 하는 와중에 logstash의 config 파일을 고칠일이 생겨서 고치고 재시작을 했다. 그런데 systemd를 이용해서 restart를 했는데 웬걸..그대로 멈추고 logstash가 실행이 안되는 것이었다.. 그래서 status를 확인해보니.. deactivating(stop-sigterm)이라고 되어있는것이었다.. 역시 이럴때는 구글링이 최고여서 이것저것 많이 찾아봤는데 다행히 해결방법을 찾았다.(원인은 모르겠는데..) 해결 방법은 굉장히 간단했는데 이 부분에 보면 PID가 나와있는데 이 부분을 직접 kill 명령어를 이용해서 직접 프로세스를 종료해주면 해결이 된다. 고.. 2020. 9. 4.
elasticsearch java high level rest client에서 analyze 사용 High Level Rest Client JAVA에서 elasticsearch를 사용하기 위한 것으로 index를 생성,삭제 등의 기능을 지원하며 이것을 통해서 쿼리를 따로 작성하지 않고 간단하게 기능을 구현할 수 있다. 기본적인 레퍼런스는 아래 링크에 잘 설명되어 있지만 아무래도 영어다보니 의사소통이 잘 안될수 있어서 올린다. 참고로 High Level Rest Client가 아닌 Low Level Rest Client를 사용한다면 더 복잡한 쿼리를 직접 작성할 수 있다. https://www.elastic.co/guide/en/elasticsearch/client/java-rest/current/java-rest-high.html [ Java High Level REST Client | Java RE.. 2020. 8. 5.