기존에 만들었던 IMS 검색엔진의 아이디어들을 정리하면서 동시에 Mac과 친해질 겸 Mac 환경으로 진행할 예정. 그리고 기존 검색엔진은 ELK 6 버전에서 만들었었는데 7 버전에서 구현해보며 최신 버전 체험도 해보려고 한다. 서버에 있던 소스들을 Mac 로컬 환경으로 내려받아 구동해보려고 했더니 index 만드는 것부터 변경 사항이 있었고, Search API에도 type 구조가 드디어 없어지면서 달라진 부분이 바로 눈에 띄었다.
다음과 같은 개요로 진행하면될 것 같은데
- ElasticSearch, Kibana 설치
- IMS 데이터 크롤링
- Python 검색 모듈 만들기
- Flask 웹서비스
오늘은 첫번째 1. ElasticSearch, Kibana 설치
단계로, 운영 서버가 아닌 Mac 개발환경에서 대충 localhost 로 테스트할 것이기 때문에 설정할 부분이 아무것도 없다.
ElasticSearch, Kibana 설치
엘라스틱 공홈 (https://www.elastic.co/kr/start
) 에 가면 Windows, Mac, Linux 환경별 바이너리를 제공하는데
환경에 맞는 바이너리를 사용할 것.
ElasticSearch 설치
적당한 위치를 만들어서, 바이너리를 다운로드하고 압축을 풀고 실행하면 끝. 여기에서는 홈경로에 Elastic
이라는 디렉토리를 만들어서 진행.
mkdir ~/Elastic
cd ~/Elastic
curl -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.3.0-darwin-x86_64.tar.gz
tar -xvzf elasticsearch-7.3.0-darwin-x86_64.tar.gz
elasticsearch-7.3.0/bin/elasticsearch &
웹브라우저에서 http://localhost:9200
경로에 접근하면 아래와 같이 기본적인 elasticsearch 클러스터 정보를 확인할 수 있다.
nori analyzer 설치
한글 텍스트를 찾는 검색 엔진을 만들 것이기때문에 nori 형태소 분석기까지 설치한다.
elasticsearch-7.3.0/bin/elasticsearch-plugin install analysis-nori
다음 메시지가 출력되면 정상적으로 설치된 것인데
-> Installed analysis-nori
플러그인이 적용되려면 재기동을 해주어야 한다.
fuser -kn tcp 9200 ## elasticsearch 종료. fuser가 없으면 9200 포트를 사용하는 프로세스를 찾아 수동으로 종료
elasticsearch-7.3.0/bin/elasticsearch & ## elasticsearch 실행
issue 인덱스 템플릿 생성
인덱스 템플릿은 특정 이름으로 생성되는 인덱스에 대해 다음과 같은 데이터 타입과 Anaylzer 를 고정시키는 기능을 해주는데, RDBMS DDL과 비슷하다. Full-Text Search 를 적용할 필드들에 대해서는 nori 형태소 분석기를 적용해주고 나머지는 keword, date 정도로만 지정한다.
curl -X PUT "localhost:9200/_template/template_issue-v0.1.4?pretty" -H 'Content-Type: application/json' -d'
{
"template" : "issue-v0.1.4",
"settings": {
"number_of_shards": 1,
"number_of_replicas": "0",
"refresh_interval": "300s",
"index": {
"analysis": {
"analyzer": {
"nori_korean":{
"type": "custom",
"tokenizer": "nori_tokenizer",
"filter": [
"lowercase"
]
}
}
}
}
},
"mappings" : {
"properties": {
"Subject": {
"type": "text",
"analyzer": "nori_korean"
},
"Issue Number": {
"type": "integer"
},
"Reporter": {
"type": "text"
},
"Owner": {
"type": "text"
},
"Handler": {
"type": "text"
},
"Registered date": {
"type": "date",
"format": "yyyy/MM/dd HH:mm:ss"
},
"Date of final order": {
"type": "date",
"format": "yyyy/MM/dd HH:mm:ss"
},
"Closed Date": {
"type": "date",
"format": "yyyy/MM/dd HH:mm:ss"
},
"Issue Details": {
"type": "text",
"analyzer": "nori_korean"
},
"Action Log": {
"type": "text",
"analyzer": "nori_korean"
},
"Category": {
"type": "keyword"
},
"Customer": {
"type": "keyword"
},
"Module": {
"type": "keyword"
},
"Bug Number": {
"type": "keyword"
},
"Build No": {
"type": "keyword"
},
"CPU": {
"type": "keyword"
},
"CoreSet": {
"type": "keyword"
},
"CoreSet Apply Version": {
"type": "keyword"
},
"Database": {
"type": "keyword"
},
"Database Version": {
"type": "keyword"
},
"Defect": {
"type": "keyword"
},
"Edition": {
"type": "keyword"
},
"Error Code": {
"type": "keyword"
},
"Error Number": {
"type": "keyword"
},
"Expected Version": {
"type": "keyword"
},
"Inclusion in CoreSet": {
"type": "keyword"
},
"JDK": {
"type": "keyword"
},
"Memory": {
"type": "keyword"
},
"Middleware": {
"type": "keyword"
},
"Operating System": {
"type": "keyword"
},
"Patch No": {
"type": "keyword"
},
"Patch Version": {
"type": "keyword"
},
"Platform": {
"type": "keyword"
},
"Priority": {
"type": "keyword"
},
"Product": {
"type": "keyword"
},
"Project": {
"type": "keyword"
},
"Severity": {
"type": "keyword"
},
"Tagging word": {
"type": "keyword"
},
"Tool": {
"type": "keyword"
},
"Version": {
"type": "keyword"
},
"approved by": {
"type": "keyword"
},
"Status": {
"type": "keyword"
}
}
}
}
'
Kibana 설치
이것도 같은 위치에서, 바이너리를 다운로드하고 압축을 풀고 실행.
cd ~/Elastic
curl -O https://artifacts.elastic.co/downloads/kibana/kibana-7.3.0-darwin-x86_64.tar.gz
tar -xvzf kibana-7.3.0-darwin-x86_64.tar.gz
kibana-7.3.0-darwin-x86_64/bin/kibana &
키바나는 http://localhost:5601
에 접근하면 다음과 같은 화면을 확인할 수 있다. 6 버전과 비교해서 레이아웃은 그대로이지만 스타일이 좀 바뀌고 기능도 좀 추가된 것 같다. 사실 Kibana 에서 사용하는 유일한 기능은 Dev Tools
뿐이다.