Skip to main content

Elasticsearch 7.3 활용해보기 #2

아무것도 모르고 시작한 Elasticsearch…. 이제 좀 어느정도 적응중입니다.

전편에서는 설치를 해보았는데… 그냥 쓰면 한글이 잘 검색되지 않습니다. Elasticsearch는 색인을 하여 검색할 단어를 미리 뽑아놓아야지만 원할한 검색이 이루어집니다. 그냥하게되면 빈칸 단위로 색인이 되어 정확한 단어를 입력해야지만 검색이 되게 됩니다.

공식적으로 제공하는 자연어분석기인 nori를 설치해보았습니다. 다음 링크를 참고하세요.

설치는 기본 폴더에서 처리되게 됩니다. (참고: /usr/share/elasticsearch )

bin/elasticsearch-plugin install analysis-nori

설치는 간단히 끝나지만, 이것만으로 자동으로 적용되지는 않습니다. index(문서의 묶음, DBMS에서 DB의 역할??)에서 적용될 수 있도록 한국어 자연어 분석기를 설정해줘야합니다. (추후에 실제 적용할때 알아봅시다.)

elasticsearch의 구조를 대략 설명하자면 ….
index가 있다. 이 인덱스 속에 mapping이라는 것으로 필드도 세팅할수 있는 것 같습니다. 그렇지만 mapping은 특별히 설정하고 싶다면 해도 되지만, 자동으로 생성되어 각각의 데이터의 필드를 구분 할 수 있었습니다. 뿐만 아니라 데이터(문서)를 추가할 때 색인을 추출함 으로 미리 analyze가 설정되어야합니다. (했던 말을 또하는 것 같은 … 기분이..)

어쨌든 nori를 설치하였다면, kibana에 접속해봅시다.

그리고 메인화면에 있는 Console을 통해서 쿼리를 날려볼 수 있습니다. (메뉴에서 어떻게가는지 모르겠고 메인화면 바로가기 아이콘 중에 있습니다. )

GET _analyze
{
  "analyzer": "nori",
  "text" : "우분투의 버전은 배포판이 나온 연도와 달로 매긴다."
}

쿼리를 보내면 명사와 의미 있는 단어들만 분리 되어 보이는 것을 확인 할 수 있습니다.

뭐 이걸로 인해 단점이 있을 수는 있지만…. (실제 검색에서는 ‘우분’ 만 치면 검색이 되지 않습니다. -_- 완성된 단어로만 검색이 되게 됩니다. mysql 같이 dbms만 쓰던 사람은 적응이 잘….. )

쿼리만 보면 간단해 보이지만, 실제로는 수많은 옵션들이 있습니다. ( …. 뭔가 만만하지 않아요! )

다음편에서는 서버도 준비 되었겠다. 간단한 CRUD를 만들어 볼 예정입니다.
(물론 한글 위주로 작업해볼꺼고 …. JS로도 할수있고 PHP로도 할 수 있습니다. )

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.