[ElasticSearch] 개요 – Lucene

Lucene 용어
 
용어 상세
Document
(DBMS의 record)
  • 기본적인 정보의 저장 단위로써, 수집한 row content를 Field의 집합으로 관리
  • Field  : Document를 구성하고 있는 항목
  • name, fieldType, value로 구성
Analyzer
  • Field의 value (text)로 부터 token을 추출
  • Analyzer 구성
  • CharFilter  : 전체 문자열 전처리 (복수)
  • Tokenizer  : 전체 문자열을 Token으로 분할
  • TokenFilter  : Token에 대한 필터링 처리 (복수)
Index
(DBMS의 database)
  • Directory  : Lucene 인덱스가 저장된 폴더
  • Segment  : Index를 구성하는 요소로 독립적인 index 정보를 가짐
  • Term  : 저장과 검색을 위한 기본 단위
  • field name과 word (text)로 구성
Query
  • 검색어 : Search String을 Lucene에서 사용하는 문법으로 변환한 것
  • 종류 : TermQuery, BooleanQuery, WildcardQuery, PhraseQuery, PrefixQuery, MultiPhraseQuery, FuzzyQuery, RegexpQuery, TermRangeQuery, NumericRangeQuery, ConstantScoreQuery, DisjunctionMaxQuery, MatchAllDocsQuery
Filter
  • 종류 : CachingWrapperFilter, DocTermOrdsRangeFilter, FieldCacheRangeFilter, FieldCacheTermsFilter, FieldValueFilter, MultiTermQueryWrapperFilter, NumericRangeFilter, PrefixFilter, QueryWrapperFilter, TermRangeFilter
TopDocs
  • 검색한 문서의 ID (docID)를 저장
Scorer
  • 종류 : BoostScorer, BulkScorer, ConjunctionScorer, DisjunctionMaxScorer, DisjunctionScorer, DisjunctionSumScorer, ExactPhraseScorer, FakeScorer, MinShouldMatchSumScorer, ReqExclScorer, ReqOptSumScorer, ScoreCachingWrappingScorer, SloppyPhraseScorer, TermScorer
  • Lucene Process 이해
LuceneProcess.png
  • Lucene Score

LuceneScore.png

파일

 

ElasticSearch 폴더 구조와 설정

 

ElasticSarch 폴더 구조

폴더 설정 변수 상세
bin 윈도우용 실행 파일

  • elasticsearch.bat : ElasticSearch 실행
  • service.bat : Service 형태로 ElasticSearch 실행
    service.bat install | remove | start | stop | manager [SERVICE_ID]
  • plugin.bat : Plugin Manager 실행

Linux용 실행 파일

  • elasticsearch : ElasticSearch 실행
  • plugin : Plugin Manager 실행
config path.conf 설정 파일 폴더

  • elasticsearch.yml : ElasticSearch 설정 파일
  • logging.yml : 로그 설정 파일
data path.data 데이터와 인덱스를 저장하는 폴더

  • path.data: /path/to/data1,/path/to/data2
lib ElasticSearch용 라이브러리

  • Lucene 검색 엔진 라이브러리
  • Sigar 라이브러리 : CPU, Memory, Disk 등을 모니터링
logs path.logs 로그 폴더
plugins path.plugins ElasticSearch 플러그인 폴더
work path.work 임시 작업용 폴더
  • path.home : ElasticSearch가 설치된 폴더를 지정하는 설정 변수

ElasticSearch 구성

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 종류

  • Master node
    • node.master: true
    • Cluster와 Node의 상태 정보를 관리
    • Index와 Shard의 조정자 역할
  • Data node
    • node.data: true
    • 색인 데이터를 저장
  • Load Balance node
    • node.master: false, node.data: false
    • 검색 요청을 받아 분산 처리
  • Client node
    • node.client: true, node.master: false
    • Master node로 사용하지 않고 Client 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 종류

  • local
  • shared fs
  • hadoop
  • s3
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] 발표 자료 – QueryParser

 
검색 엔진은 크게 아래 3가지 범주의 기능을 제공 합니다.
   Index
   Search (Query, Filter)
   결과 조회
 
Solr와 ElasticSearch는 그외에 다음과 같은 기능도 제공 합니다.
   Backup
   Replication
 
기능을 너무 크게 묶었나요…
 
Solr에서 제공하는 QueryParser의 종류와 사용법을 첨부 하였습니다.
 
 
 
 
파일

 
 
 
 

[ElasticSearch] Windows에서 Solr 실행

 
 
  • Solr 다운로드 사이트에서 solr-4.9.0.zip 파일을 다운로드 합니다. 다운로드 받은 파일로 c:/appl/solr/ 폴더를 생성 합니다.
  • 아래 명령어를 사용하여 Solr를 실행 합니다.
cd c:/appl/solr/example
java -jar start.jar
  • 설정 파일 정보
  • etc/jetty.xml : Jetty 설정 파일
  • webapps/solr.war : Application 배포 파일
  • solr-webapp/webapp
  • contexts/solr-jetty-context.xml : Application 설정 파일
  • etc/webdefault.xml
  • lib/ : Jetty 라이브러리
  • logs/ : 로그 폴더
  • resources/log4j.properties : 설정 파일
  • solr/collection1/ : collection1 Solr Core 폴더
 
파일

 

 

 

 

 

 

[ElasticSearch] Lucene 개념 소개

 
2014년 8월 9일부터 Solr를 시작하게 되었습니다.
 
이번에 새로 합류하게된 멤버가 있어서
Lucene 개념에 대해서 간단하게 소개하는 시간을 가졌습니다.
 
첨부된 문서를 참조 하세요.

 
 
파일

 

 

 

[ElasticSearch] Lucene Advanced Search

 
 
Lucene Advanced Search 발표 자료를 첨부 합니다.
 
 
 
 
 
파일

 

 

 

 
 

[ElasticSearch] 2014년 6월 21일 스터디 후기

ElasticSearch 스터디를 시작한 후
정규 표현식과 자연어처리를 살펴 보았습니다.
금주는 처음으로 검색 엔진에 대해서 살펴 보는 시간을 가졌습니다.
 
Lucene 개요와 Indexing와 Searching 프로세스의 개념적인 부분을 살펴 보았습니다.
ElasticSearch의 구성 요소 중 하나인 Lucene은 버전에 따라 구현 방식이
조금씩 다르기 때문에 개념적인 측면에서 동작 방식을 이해하는데 초점을 맞추어서 진행을 하였습니다.
 
원래 3시간 스터디 일정이었는데
참여한 사람들이 열정이 넘쳐서 5시간 30분 동안 진행이 되었습니다.
 
 
다음주에는 Tika를 사용한 데이터 수집과 
MySQL을 사용한 검색 서비스 구축을 하기로 되어 있어 많이 기대 됩니다.
 
 
 
  • Lucene Process 이해
LuceneProcess
  • Lucene Score

LuceneScore

 
 
 
파일

 

 

 

 

 

[ElasticSearch] Lucene Searching

 
 
Lucene Searching 요약 자료 입니다.
 
 
 
 
 
파일

[ElasticSearch] Lucene Indexing

 
 
Lucene Indexing 요약 자료 입니다.
 
 
 
 
 
파일

 

 

 
 

[ElasticSearch] Lucene 개발 환경 – 라이브러리

 
 
Lucene를 실행하는데 기본적으로 필요한 라이브러리 목록 입니다.
일부 ElasticSearch 라이브러리도 추가 하였습니다.
 
Eclipse에서 설정하여 사용 하세요.
 
 
#— 공통 라이브러리
commons-logging-1.1.1.jar
log4j-1.2.16.jar
 
#— Lucene 라이브러리
lucene-core-4.8.1.jar
lucene-analyzers-common-4.8.1.jar
lucene-queryparser-4.8.1.jar
lucene-suggest-4.8.1.jar
 
#— ElasticSearch 라이브러리
elasticsearch-1.2.0.jar
elasticsearch-analysis-korean-1.3.0.jar    #— Arirang 한글 형태소 분석기 포함

 
 
 
 
파일