Elasticsearch 정리
검색엔진으로 루씬(Lucene)기반이며 JVM위에서 동작한다.
Elasticsearch 과 RDBS 비교
RDBS : 데이타베이스 > 테이블 > Row > column > Schema
ES : 인덱스 > 타입 > Document > Field > Mapping
REST API 방식을 사용하기 때문에
http://localhost:9200/books/computer/java 라는 url구조를 가지고 있으면
books : index
computer : type
java : document
와 매핑된다.
Elasticsearch 분산
클러스터를 주키퍼로 한다. 주키퍼는 분산 환경 프레임워크이다.
Elasticsearch 파일 저장
세그먼트 -> 데이터를 추가하면 디스크에 세그먼트 단위로 저장을 한다. 그리고 그 것이 쌓이면 머지를 시켜서 하나의 색인(Index)로 만들어 준다.
노드 > 색인들의 집합. 주로 서버 1대를 의미한다.
클러스터 > 여러개의 노드들을 모아서 클러스터를 구성한다.
Elasticsearch 사드와 리플리카
샤드 > 데이터가 많을 때 그 것을 횡으로 잘라 놓은 것이 샤드이다.
리플리카 > 샤드의 복제본.
Elasticsearch 포트 :
9200 : 외부 통신용,
9300 : 노드들 끼리 통신용.
Elasticsearch 설정
node.data = true/false => 데이터를 저장하거나 핸들링한다
node.master = true/false => 클러스터 관리를 한다.
둘다 false 이면 통신 역할만 한다. 다른 노드들과 연결을 시켜주는 것이다.
node.master를 여러 대 둘 수 있다. 둘다 같이 하다가 하나가 죽으면 다른 애들이 마스터 역할을 하므로 서비스가 안정적이다.
Elasticsearch 랭킹
검색 스코어
검색어가 문서내에 얼마나 자주 등장하나
필드에 가중치를 줄 수 있다.
문서 가중치 - document 가 가중치를 가지고 있다.
루씬의 기본 검색 스코어
TF(Term Frequency): 단어 빈도 - 키워드가 많이 일치할수록 문서 점수가 높아진다.
IDF(Inverse Document Frequency): 문서 역빈도 - 일치되는 키워드가 드물수록 문서 점수가 높아진다.(다른 문서에는 이 키워드가 별로 없다)
norm: 문서 길이 가중치 - 문서의 길이가 짧을 수록 문서 점수가 높아진다.
필드에 대한 중요도가 높을수록 문서 점수가 높아진다.
BM25 검색 스코어
TF 의 가중치를 낮춘다.
IDF 의 가중치를 높힌다.
norm 의 가중치를 낮춘다.
Elasticsearch Facet
RDBS의 그룹바이의 개념이다.
Elasticsearch Aggregations
Facet 된 것을 Bucket 이라고 하는데, Bucket 단위로 집계를 낼 수 있다.
'ELK' 카테고리의 다른 글
[kibana]dateFormat tip (12) | 2016.10.13 |
---|
댓글