[ElasticSearch] 개요 – Lucene
용어 | 상세 |
Document (DBMS의 record) |
|
Analyzer |
|
Index (DBMS의 database) |
|
Query |
|
Filter |
|
TopDocs |
|
Scorer |
|

- 위키 : 오픈소스 비즈니스 컨설팅
- 블로그 : 블로그
- 카페 : 산사랑의 카페
용어 | 상세 |
Document (DBMS의 record) |
|
Analyzer |
|
Index (DBMS의 database) |
|
Query |
|
Filter |
|
TopDocs |
|
Scorer |
|
jar 파일로 JVM Plugin을 구성 합니다.
es-plugin.properties 파일
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) | 모듈이 로딩될 때, 실행되는 함수 |
ElasticSearch 폴더 구조
폴더 | 상세 |
bin |
|
config |
|
data |
|
lib |
|
logs |
|
plugins |
|
Plugin 설치 프로그램
설치 프로그램 : org.elasticsearch.plugins.PluginManager
옵션 | 상세 | |
-u | -url ~ | Plugin 설치 파일 (~.zip) 다운로드 URL |
-i | -install ~ | 설치할 Plugin 이름 plugins/Plugin_이름/ 폴더에 설치됨 |
-t | -timeout ~ | 타임아웃 설정 (30s, 1m, 1h, …) |
-r | -remove ~ | 삭제할 Plugin 이름 |
-l | -list | 설치된 Plugin 목록 표시 |
-v | -verbose | 상세 정보 표시 |
-s | -silent | Silent 모드로 실행 |
-h | -help | 도움말 표시 |
Plugin 설치 파일 폴더 구조
~.zip 파일
폴더 | 상세 | |
플러그인명-버전/ |
|
|
_site/ |
|
|
bin/ |
|
|
config/ |
|
|
_dict/ |
ElasticSearch는 REST (Representational State Transfer) API를 제공하여 다양한 환경에서 사용할 수 있습니다.
REST에서 Methods의 주요 용도
URI 기본 형태
Action
Action | 상세 | |||||||||||||||||||||||||||||||||||||||||||||||||||
_cluster | 클러스터 관련 작업 | |||||||||||||||||||||||||||||||||||||||||||||||||||
_nodes | 노드 관련 작업 | |||||||||||||||||||||||||||||||||||||||||||||||||||
_aliases | index alias 관련 작업 | |||||||||||||||||||||||||||||||||||||||||||||||||||
_analyze | analyzer 관련 작업 | |||||||||||||||||||||||||||||||||||||||||||||||||||
_cache | Cache 관련 작업 | |||||||||||||||||||||||||||||||||||||||||||||||||||
_flush | Transaction log 또는 Memory free 작업 | |||||||||||||||||||||||||||||||||||||||||||||||||||
_optimize | Segment 파일 병합 작업 | |||||||||||||||||||||||||||||||||||||||||||||||||||
_stats | 시스템 또는 색인의 통계 정보 | |||||||||||||||||||||||||||||||||||||||||||||||||||
_search | 검색 작업 | |||||||||||||||||||||||||||||||||||||||||||||||||||
_msearch | Multi 검색 작업 | |||||||||||||||||||||||||||||||||||||||||||||||||||
_mget | Multi Document petch 작업 | |||||||||||||||||||||||||||||||||||||||||||||||||||
_validate | Query에 대한 유효성 검사 작업 | |||||||||||||||||||||||||||||||||||||||||||||||||||
_suggest | 검색어 자동 완성 | |||||||||||||||||||||||||||||||||||||||||||||||||||
_bulk | Bulk 색인 작업 | |||||||||||||||||||||||||||||||||||||||||||||||||||
_count | 문서 count 작업 | |||||||||||||||||||||||||||||||||||||||||||||||||||
_settings | elasticsearch.yml에 설정한 global settings 정보 조회 http://localhost:9200/index/_settings?pretty=true
|
|||||||||||||||||||||||||||||||||||||||||||||||||||
_mapping | 매핑 정보 http://localhost:9200/index/_mapping?pretty=true Core Type Attribute
필드 타입
필드 종류
|
등록/수정/삭제/조회 사례
등록 (POST / PUT) |
curl -XPUT 'node201.hadoop.com:9200/customer?pretty' curl -GET 'node201.hadoop.com:9200/_cat/indices?v'
curl -XPOST 'node201.hadoop.com:9200/customer/external?pretty' -d ' { "name": "Mountain Lover" }' curl -XGET 'node201.hadoop.com:9200/customer/external/1lz2jL6CQui07FnZGd_R9w?pretty'
curl -XPUT 'node201.hadoop.com:9200/customer/external/1?pretty' -d ' { "name": "Mountain Lover" }' curl -XGET 'node201.hadoop.com:9200/customer/external/1?pretty'
|
수정 (PUT / POST) |
curl -XPOST 'node201.hadoop.com:9200/customer/external/1/_update?pretty' -d ' { "doc": { "name": "Mountain Lover!", "age": 20 } }' curl -XGET 'node201.hadoop.com:9200/customer/external/1?pretty'
curl -XPUT 'node201.hadoop.com:9200/customer/external/1?pretty' -d ' { "name": "Mountain Lover!" }' curl -XGET 'node201.hadoop.com:9200/customer/external/1?pretty'
|
삭제 (DELETE) |
curl -XDELETE 'node201.hadoop.com:9200/customer/external/1?pretty' curl -XGET 'node201.hadoop.com:9200/customer/external/1?pretty' curl -XDELETE 'node201.hadoop.com:9200/customer/external/_query?pretty' -d ' { "query": { "match": { "name": "Mountain Lover!" } } }' curl -XGET 'node201.hadoop.com:9200/customer/external/1?pretty'
curl -XDELETE 'node201.hadoop.com:9200/customer?pretty' curl -GET 'node201.hadoop.com:9200/_cat/indices?v'
|
조회 (GET) |
curl -GET 'node201.hadoop.com:9200/_cat/indices?v' curl -XGET 'node201.hadoop.com:9200/customer/external/1?pretty'
|
검색 (GET / POST) |
curl -XGET 'node201.hadoop.com:9200/customer/_search?q=*&pretty'
curl -XPOST 'node201.hadoop.com:9200/customer/_search?pretty' -d ' { "query": { "match_all": {} } }'
|
폴더 | 설정 변수 | 상세 |
bin | 윈도우용 실행 파일
Linux용 실행 파일
|
|
config | path.conf | 설정 파일 폴더
|
data | path.data | 데이터와 인덱스를 저장하는 폴더
|
lib | ElasticSearch용 라이브러리 | |
logs | path.logs | 로그 폴더 |
plugins | path.plugins | ElasticSearch 플러그인 폴더 |
work | path.work | 임시 작업용 폴더 |
YAML 문법에 따라 elasticsearch.yml 파일에서 설정 변수를 구성 합니다.
설정 변수 | Default | 상세 |
cluster.name | elasticsearch | Cluster 이름 data/Cluster 이름/ 폴더가 생성됨 |
node.name | 0, 1, 2, … (자동 생성) |
Node 이름 data/Cluster 이름/nodes/Node 이름/ 폴더가 생성됨 |
node.masternode.data
node.client |
truetrue
false |
Node 종류
|
index.number_of_shards | 5 | Shard 개수 |
index.number_of_replicas | 1 | Replica 개수 |
http.enabled | true | http 서비스를 활성화 합니다. |
http.port | 9200 | http 서비스에서 사용하는 port |
transport.tcp.port | 9300 | netty의 Transport에서 사용하는 port |
transport.tcp.compress | true이면 Transport에서 압축 허용 | |
network.bind_host | Client의 요청을 접수할 IP 주소 | |
network.host | ElasticSearch Node의 IP 주소 | |
gateway.type | local | Cluster의 메타 정보와 Index 설정, Mapping 정보 등을 어디서 관리할 것인지 지정Gateway 종류
|
discovery.zen.minimum_master_nodes | 1 | 최소 Master node 개수 (2개 이상 권장) |
discovery.zen.ping.timeout | 3s | |
discovery.zen.ping.multicast.enabled | true | |
discovery.zen.ping.unicast.hosts | Unicast 사용시 검색할 서버와 포트 예) [“host1”, “host2:port”] |
ElasticSearch 설치
ElasticSearch는 JDK 7 이상에서 실행되는 Java 기반의 애플리케이션으로 별도의 설치 과정 없이 소스를 다운로드 받아 실행하면 됩니다. 다운로드 사이트(http://www.elasticsearch.org/download/)에서 최신 버전(elasticsearch-1.3.2.zip)의 ElasticeSearch를 다운로드 합니다. 압축을 풀어 c:/appl/elasticsearch/ 폴더를 생성 합니다.
실행 및 확인
bin/ 폴더에서 elasticsearch.bat 파일을 실행 합니다.
브라우저에서 http://localhost:9200/ 로 접속하여 확인 합니다.
Cluster 정보 확인
Node 정보 확인
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
만일 위 명령어로 설치시 오류가 발생하면 아래와 명령어로 설치를 다시 진행 합니다. |
설치가 정상적으로 완료되면 plugins/analysis-korean/elasticsearch-analysis-korean-1.3.0.jar 파일을 확인할 수 있습니다.
Lucene은 널리 알려진 Java 기반의 오픈소스 검색 엔진 라이브러리 입니다. 많은 곳에서 사용 되고 있지만 라이브러리 형태라 사용에 불편함이 있고 BigData 시대를 맞아 분산 환경을 지원하지 않아 새로운 대안 솔루션이 필요하게 되었습니다. 오픈소스 진영에서는 분산 환경을 지원하는 Solr와 ElasticSearch가 Lucene 기반으로 작성이 되었습니다. ElasticSearch는 RESTful API를 지원하는 특성으로 인하여 여러 환경으로 포팅이 될 수 있어서 사용이 편리한 분산 검색 엔진 입니다.
ElasticSearch의 특징
ElasticSearch 용어
용어 | 상세 |
Cluster |
|
Node |
|
Index (indice) |
|
Shard |
|
Type (Document Type) |
|
Mapping |
|
Route |
|
Document |
|
Field |
|
Gateway |
|
Query |
|
TermQuery |
|
Term |
|
Token |
|
ElasticSearch의 개념적 구성도
ElasticSearch 관련 오픈소스
회사소개 |
이용약관 |
개인정보취급방침 |
이메일수집거부
회사소개서(pdf) |
|
(주)오비컨 | 대표이사 김계현 | 사업자등록번호 : 363-88-00802 | 통신판매업신고번호 : 제2020-성남분당A-0642호
주소 : (13638) 경기도 성남시 분당구 성남대로2번길 6(구미동) 333호 (구미동, LG트윈하우스) |