ElasticSearch - Plugin
ElasticSearch의 Plugin을 정리 합니다.
Plugin 구조
Plugin 설치 프로그램
설치 프로그램 : org.elasticsearch.plugins.PluginManager
옵션 |
상세 | |
-u | -url ~ | Plugin 설치 파일 (~.zip) 다운로드 URL |
-i | -install ~ |
설치할 Plugin 이름 [username/]pluginname[/version]
|
-t | -timeout ~ | 타임아웃 설정 (30s, 1m, 1h, ...) |
-r | -remove ~ | 삭제할 Plugin 이름 |
-l | -list | 설치된 Plugin 목록 표시 |
-v | -verbose | 상세 정보 표시 |
-s | -silent | Silent 모드로 실행 |
-h | -help | 도움말 표시 |
Plugin 설치 파일 다운로드 위치
- "https://github.com/" + user + "/" + repo + "/archive/master.zip"
- "http://download.elasticsearch.org/" + user + "/" + repo + "/" + repo + "-" + version + ".zip"
- "http://search.maven.org/remotecontent?filepath=" + user.replace('.', '/') + "/" + repo + "/" + version + "/" + repo + "-" + version + ".zip"
- "https://oss.sonatype.org/service/local/repositories/releases/content/" + user.replace('.', '/') + "/" + repo + "/" + version + "/" + repo + "-" + version + ".zip"
- "https://github.com/" + user + "/" + repo + "/archive/" + version + ".zip"
Plugin 설치 파일 폴더 구조
~.zip 파일
폴더 |
상세 | |
플러그인명-버전/ |
| |
_site/ |
| |
bin/ |
| |
config/ |
| |
_dict/ |
Site Plugin
plugins/head/_site/ 폴더가 생성 됩니다.
http://node111.jopenbusiness.com:9200/_plugin/head/ URL로 접속할 수 있습니다.
JVM Plugin
jar 파일에 들어 있는 es-plugin.properties 파일
- plugin=org.elasticsearch.plugin.analysis.kr.AnalysisKoreanPlugin : 플러그인 설치 파일
- org.elasticsearch.plugins.AbstractPlugin 파일을 구현한 class
- version=~ : Plugin 버전
- description=~ : Plugin 설명
- lucene=~ : Lucene 버전
플러그인 설치 파일의 구성 함수
종류 | 관련 class | 상세 |
name() | Plugin 이름 | |
description() | Plugin 설명 | |
modules() | Module | Node level modules org.elasticsearch.plugins.PluginsModule |
indexModules() | Module | Per index modules org.elasticsearch.plugins.IndexPluginsModule |
shardModules() | Module | Per index shard module org.elasticsearch.plugins.ShardPluginsModule |
services() | LifecycleComponent | Node level services |
indexServices() | CloseableIndexComponent | Per index services |
shardServices() | CloseableIndexComponent |
Per index shard services |
processModule() | Module | |
additionalSettings() | Plugin이 로딩될 때 추가되는 node 설정 | |
onModule(AnyModule module) |
모듈이 로딩될 때, 실행되는 함수 |
참고 문헌
유용한 Plugin
종류 | Plugin | 상세 |
Site | Korean Analytis 한글 형태소 분석기 | plugin -install chanil1218/elasticsearch-analysis-korean/1.3.0 또는 plugin -url https://dl-web.dropbox.com/spa/grpekzky9x5y6mc/elastic-analysis-korean/public/elasticsearch-analysis-korean-1.3.0.zip -install analysis-korean |
Site | Head Plugin | 인덱스와 샤드, 도큐먼트에 대한 관리 및 상태 점검 기본적인 검색 질의 기능 제공 plugin -install mobz/elasticsearch-head http://node111.jopenbusiness.com:9200/_plugin/head/ |
JVM/Site | Marvel Plugin | 노드에 대한 stats 정보를 인덱스에 색인하여 검색과 대시보드 형태로 제공 Logstash와 Kibana 기반으로 구성 plugin -i elasticsearch/marvel/latest http://node111.jopenbusiness.com:9200/_plugin/marvel/ |
Site | Bigdesk Plugin | 실시간으로 서버와 검색 엔진의 상태, 자원 현황을 실시간 모니터링 plugin -install lukas-vlcek/bigdesk http://node111.jopenbusiness.com:9200/_plugin/bigdesk/ |
Site | Sense | REST API를 실행하고 결과를 확인 plugin -install bleskes/sense http://node111.jopenbusiness.com:9200/_plugin/sense/ |
Site | Elasticsearch HQ |
head와 bigdesk의 기능이 합쳐진 plugin plugin -install royrusso/elasticsearch-HQ http://node111.jopenbusiness.com:9200/_plugin/HQ/ |
Site | Hammer Plugin |
검색 질의와 결과를 제공 plugin -install andrewvc/elastic-hammer http://node111.jopenbusiness.com:9200/_plugin/elastic-hammer/ |
Site | Inquisitor Plugin |
검색 질의와 결과를 제공 형태소 분석 기능 제공 plugin -install polyfractal/elasticsearch-inquisitor http://node111.jopenbusiness.com:9200/_plugin/inquisitor/ |
Site | Paramedic Plugin |
실시간 서버 모니터링 (bigdesk와 유사) plugin -install karmi/elasticsearch-paramedic http://node111.jopenbusiness.com:9200/_plugin/paramedic/ |
Site | SegmentSpy Plugin |
인덱스와 샤드 정보 제공 plugin -install polyfractal/elasticsearch-segmentspy http://node111.jopenbusiness.com:9200/_plugin/segmentspy/ |
한글 형태소 분석기 Plugin
Korean Analysis for ElasticSearch (http://github.com/chanil1218/elasticsearch-analysis-korean) 사이트에서 한글 형태소 분석기 Plugin을 설치 합니다. ElasticSearch용 한글 형태소 분석기 Plugin은 "루씬 한글분석기 오픈소스 프로젝트"를 가져와 작성이 되었습니다.
루씬 한글분석기 오픈소스 프로젝트
- 카페 : http://cafe.naver.com/korlucene
- SourceForge : http://sourceforge.net/projects/lucenekorean
- SVN : https://lucenekorean.svn.sourceforge.net/svnroot/lucenekorean
- CVS : d:pserver:anonymous@lucenekorean.cvs.sourceforge.net:/cvsroot/lucenekorean
한글 형태소 분석기 Plugin 설치
bin/plugin -install chanil1218/elasticsearch-analysis-korean/1.3.0 만일 위 명령어로 설치시 오류가 발생하면 아래와 명령어로 설치를 다시 진행 합니다. |
설치가 정상적으로 완료되면 plugins/analysis-korean/elasticsearch-analysis-korean-1.3.0.jar 파일을 확인할 수 있습니다.
- 설치 후 확인
- 동작 확인
- korea 인덱스 삭제
curl -XDELETE 'node201.hadoop.com:9200/korea?pretty'
- korea 인덱스 생성
#curl -XDELETE 'node201.hadoop.com:9200/korea?pretty' curl -XPUT 'node201.hadoop.com:9200/korea?pretty' -d '{ "settings": { "index": { "analysis": { "analyzer": { "kr_analyzer": { "type": "org.elasticsearch.index.analysis.KoreanAnalyzerProvider", "tokenizer": "KoreanTokenizer", "filter": [ "trim", "lowercase", "KoreanFilter" ] } } } } } }'
- KoreanAnalyzer 동작 확인
### curl -XGET 'node201.hadoop.com:9200/korea/_analyze?pretty&analyzer=kr_analyzer&text=이전 글에서 ElasticSearch와 Arirang 형태소 분석기를 살펴 보았습니다.' curl -XGET 'node201.hadoop.com:9200/korea/_analyze?pretty&analyzer=kr_analyzer&text=%EC%9D%B4%EC%A0%84%20%EA%B8%80%EC%97%90%EC%84%9C%20ElasticSearch%EC%99%80%20Arirang%20%ED%98%95%ED%83%9C%EC%86%8C%20%EB%B6%84%EC%84%9D%EA%B8%B0%EB%A5%BC%20%EC%82%B4%ED%8E%B4%20%EB%B3%B4%EC%95%98%EC%8A%B5%EB%8B%88%EB%8B%A4.' http://node201.hadoop.com:9200/korea/_analyze?pretty&analyzer=kr_analyzer&text=이전%20글에서%20ElasticSearch와%20Arirang%20형태소%20분석기를%20살펴%20보았습니다.
- elasticsearch-analysis-korean-1.3.0.jar 파일 구조
- es-plugin.properties
plugin=org.elasticsearch.plugin.analysis.kr.AnalysisKoreanPlugin
- packages
org.apache.lucene.analysis.kr dic/ KoreanAnalyzer.java KoreanFilter.java KoreanTokenizer.java org.apache.solr.analysis.kr KoreanFilterFactory.java KoreanTokenizerFactory org.elasticsearch.index.analysis KoreanAnalysisBinderProcessor.java KoreanAnalyzerProvider.java KoreanFilterFactory.java KoreanTokenizerFactory.java org.elasticsearch.plugin.analysis.kr AnalysisKoreanPlugin.java
- 프로그램 호출 구조
- AnalysisKoreanPlugin.java : AnalysisModule로 KoreanAnalysisBinderProcessor 등록
- KoreanAnalysisBinderProcessor.java : Analyzer, Tokenizer, Filter 등록
- KoreanAnalyzerProvider.java (kr_analyzer) -> KoreanAnalyzer
- KoreanTokenizerFactory.java (kr_tokenizer) -> KoreanTokenizer
- KoreanFilterFactory.java (kr_filter) -> KoreanFilter