ElasticSearch - Plugin

오픈소스 비즈니스 컨설팅
둘러보기로 가기 검색하러 가기

ElasticSearch의 Plugin을 정리 합니다.

Plugin 구조

Plugin 설치 프로그램

설치 프로그램 : org.elasticsearch.plugins.PluginManager

옵션
상세
-u -url ~ Plugin 설치 파일 (~.zip) 다운로드 URL
-i -install ~

설치할 Plugin 이름
plugins/Plugin_이름/ 폴더에 설치됨

[username/]pluginname[/version]

  • user : username 사용
  • pluginname : pluginname이 "elasticsearch-" 또는 "es-"로 시작하면 이 부분을 삭제한 후 사용
  • repo : 원본 pluginname 사용
-t -timeout ~ 타임아웃 설정 (30s, 1m, 1h, ...)
-r -remove ~ 삭제할 Plugin 이름
-l -list 설치된 Plugin 목록 표시
-v -verbose 상세 정보 표시
-s -silent Silent 모드로 실행
-h -help 도움말 표시


Plugin 설치 파일 다운로드 위치


Plugin 설치 파일 폴더 구조

~.zip 파일

폴더
상세
플러그인명-버전/
  • 기본적으로 모든 파일은 plugins/플러그인명/ 폴더에 배포 됩니다.
  • bin/, config/, _site/ 폴더가 없고
    • .class/.jar 파일이 없는 경우, plugins/플러그인명/_site/ 폴더에 배포 됩니다.
    • .class/.jar 파일이 있을 경우, plugins/플러그인명/ 폴더에 배포 됩니다.

_site/
  • index.html : 시작 페이지

bin/
  • bin/플러그인명/ 폴더에 배포 됩니다.

config/
  • config/플러그인명/ 폴더에 배포 됩니다.

_dict/

Site Plugin

plugins/head/_site/ 폴더가 생성 됩니다.

http://node111.jopenbusiness.com:9200/_plugin/head/ URL로 접속할 수 있습니다.

JVM Plugin

jar 파일로 JVM Plugin을 구성 합니다.


es-plugin.properties 파일

  • plugin=org.elasticsearch.plugin.analysis.kr.AnalysisKoreanPlugin : Plugin 등록 파일
    • org.elasticsearch.plugins.AbstractPlugin 파일을 구현한 class
  • version=~ : Plugin 버전
  • description=~ : Plugin 설명
  • lucene=~ : Lucene 버전


Plugin 등록 파일 구성

종류 관련 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은 "루씬 한글분석기 오픈소스 프로젝트"를 가져와 작성이 되었습니다.


루씬 한글분석기 오픈소스 프로젝트


한글 형태소 분석기 Plugin 설치

bin/plugin -install chanil1218/elasticsearch-analysis-korean/1.3.0

만일 위 명령어로 설치시 오류가 발생하면 아래와 명령어로 설치를 다시 진행 합니다.
bin/plugin -url https://dl-web.dropbox.com/spa/grpekzky9x5y6mc/elastic-analysis-korean/public/elasticsearch-analysis-korean-1.3.0.zip -install analysis-korean

설치가 정상적으로 완료되면 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

참고 문헌