실행 환경
- 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,세금
상품 => 경품
'AI > NLP' 카테고리의 다른 글
NLP 자연어 처리를 위한 딥러닝 - LSTM (5) (1) | 2021.12.18 |
---|---|
NLP 자연어처리를 위한 RNN 알고리즘 코드 기초 (4) - 심층 RNN (0) | 2021.12.17 |
NLP 자연어처리를 위한 RNN 알고리즘 코드 기초 (3) - 심층 RNN (0) | 2021.12.16 |
NLP 자연어 처리를 위한 RNN 기초 (2) (0) | 2021.12.15 |
NLP 자연어 처리를 위한 딥러닝 RNN 기초 (1) (0) | 2021.12.14 |