실행 환경

  • OS : Ubuntu20.04
  • shell : bash or zsh
  • Elasticsearch version : 7.17.4
  • Java version 8

1. 패키지 update & https repository 접근 위한 패키지 설치

sudo apt update
sudo apt install apt-transport-https

 

2. Java 설치

sudo apt install openjdk-8-jdk

# java 버전 확인

java -version
# openjdk version "1.8.0_312"
# OpenJDK Runtime Environment (build 1.8.0_312-8u312-b07-0ubuntu1~20.04-b07)
# OpenJDK 64-Bit Server VM (build 25.312-b07, mixed mode)

# JAVA 변수 등록 (아래 command 추가) 
(~/.zshrc)
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64
export PATH=$PATH:$JAVA_HOME/bin

# 변수 확인
echo JAVA_HOME # ==> JAVA_HOME 으로 출력됨

 

3. 엘라스틱서치 repository 추가

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -

# 아래 명령어가 안 되서 새로운 명령어 대체
# sudo sh -c 'echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" > /etc/apt/source.list.d/elastic-7.x.list'
echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee –a /etc/apt/sources.list.d/elastic-7.x.list

sudo apt update

 

4. 엘라스틱서치 설치

sudo apt install elasticsearch

 

5. 엘라스틱서치 서비스 실행

sudo systemctl enable elasticsearch.service
sudo systemctl start elasticsearch.service

 

6. 엘라스틱서치 Test

# 엘라스틱서치 통신
curl -X GET "localhost:9200"

# process 확인
netstat -an | grep 9200

 

7. Nori 한글 형태소 분석기 설치

# plugin 설치 파일 경로 이동
cd /usr/share/elasticsearch/

# nori 설치
sudo bin/elasticsearch-plugin install analysis-nori

# elasicsearch 재시작
sudo systemctl stop elasticsearch.service
sudo systemctl start elasticsearch.service

 

8. 엘라스틱서치 config setting

(/etc/elasticsearch/elasticsearch.yml)

# root 계정으로 수정 가능
sudo vi /etc/elasticsearch/elasticsearch.yml

# cluster name 설정 시 사용
cluster.name: local-elasticsearch

# node name 설정
node.name: local-nlp

# host 및 port 설정 (실제 아래는 세팅 안해도 default로 돼 있는 듯)
network.host: localhost
http.port: 9201

 

9. 엘라스틱서치 index list 확인

curl -XGET "http://localhost:9200/_cat/indices?format=json&pretty"

# 맨 처음 인덱스만 확인할 때
[
  {
    "health" : "green",
    "status" : "open",
    "index" : ".geoip_databases",
    "uuid" : "FchspXH5QGmC0C8L0A_biQ",
    "pri" : "1",
    "rep" : "0",
    "docs.count" : "40",
    "docs.deleted" : "0",
    "store.size" : "37.6mb",
    "pri.store.size" : "37.6mb"
  }
]

# 특정 인덱스(purpose) 추가 후 list
[
  {
    "health" : "green",
    "status" : "open",
    "index" : ".geoip_databases",
    "uuid" : "FchspXH5QGmC0C8L0A_biQ",
    "pri" : "1",
    "rep" : "0",
    "docs.count" : "40",
    "docs.deleted" : "0",
    "store.size" : "37.6mb",
    "pri.store.size" : "37.6mb"
  },
  {
    "health" : "green",
    "status" : "open",
    "index" : "purpose",
    "uuid" : "oTg6ut6IT7yZNt878Tpagw",
    "pri" : "1",
    "rep" : "0",
    "docs.count" : "0",
    "docs.deleted" : "0",
    "store.size" : "226b",
    "pri.store.size" : "226b"
  }
]

 

10. index 추가 전 synonym.txt (동의어사전) 등록 필요

  • 아래 index_config.json 내용 확인해보면 filter > synonym > synonym_path 에 analysis/synonym.txt 로 등록 돼 있음
  • elasticsearch의 default path 는 /etc/elasticsearch

(/etc/elasticsearch/analysis/synonym.txt)

TAX,tax,세금
상품 => 경품

 

 

+ Recent posts