Elasticsearch (엘라스틱서치) 7

Elasticsearch (엘라스틱서치)의 기본 랭킹 알고리즘 - BM25

TF-IDF정보 검색과 텍스트 마이닝 등에서 사용되는 가중치이다.여러 문서로 이루어진 문서군에서 특정 문서 내에서 어느 단어가 얼마나 중요한지를 나타내는 통계적 수치이다.TF: Term Frequency하나의 문서 내에 여러 번 등장하는 단어의 중요도는 어떨까?예를 들면 ChatGPT를 설명하는 글에서는 "ChatGPT" 라는 단어가 아주 잦은 빈도로 등장할 것이다.이것은 굉장히 중요한 단어이다. IDF: Inverse Document Frequency많은 문서에서 등장하는 단어는 어떨까?예를 들면 "굉장히", "다양한" 같은 문서일 것이다.이것은 중요하지 않은 단어이다. TF-IDF는 이에 착안하여 특정 단어의 중요도를 나타내는 계산 방식이다.다만 문서의 숫자가 너무 많아질수록 기하급수적으로 값이 커지..

Elasticsearch (엘라스틱서치)의 Indexing 파일 - Segment

1. Segment 세그먼트는 Elastic Search(이하 ES)가 Lucene 라이브러리를 사용하여 생성하는 인덱싱 데이터의 단위로 복수 개의 파일로 구성 각 세그먼트들은 완전히 독립되어진 문서들의 집합이며 Inverted Index 구조로 생성된 실제 인덱싱 데이터로 구성되어짐 한번 생성된 세그먼트 파일은 수정이 불가능 (Immutability) 2. Segment File Path 아래 File Path에 인덱스 세그먼트 파일들이 위치 {data_path}/data/nodes/{node_num}/indices/{index_uuid}/{shard_num}/index/ Name Type Description {data_path} String (Dir Path) ES의 data를 저장하는 path {..

Elasticsearch (엘라스틱서치)의 Indexing 방식 - Inverted Index

Indexing 이란 문서(DOC)들의 내용 중에서 검색하고자 하는 대상들을 쉽고 빠르게 찾을 수 있는 자료구조로 배치하는 것 전통적인 RDBMS 에서는 like 검색을 사용하기 때문에 데이터가 늘어날수록 검색해야 할 대상이 늘어나 시간도 오래 걸리고, row 안의 내용을 모두 읽어야 하기 때문에 기본적으로 속도가 느림.Elasticsearch는 데이터를 저장할 때 다음과 같이 역 인덱스(inverted index)라는 구조를 만들어 저장   Elasticsearch에서는 추출된 각 키워드를 텀(term) 이라고 부르며 이렇게 Inverted Index가 있으면 term을 포함하고 있는 Documents의 id를 바로 얻어올 수 있다. 이러한 특성 떄문에 Elasticsearch에서는 저장이 아닌 색인(..

Elasticsearch (엘라스틱서치)의 Search Process

Query then Fetch 와 DFS Query then Fetch를 주로 사용. 1. DFS Query then Fetch Elastic Search에서 Default로 제공하는 검색(Search) 로직 - Query Phase : 인덱스를 구성하는 샤드들로부터 DOC들을 검색 - Fetch Phase : Query Phase에서 검색된 DOC들의 스코어를 정렬하여 응답할 DOC들을 선정하고 인덱스 샤드로 부터 실제 DOC 데이터를 추출 1-1. Example 1) Cluster Environment - 클러스터는 4개의 데이터 노드로 구성 - 검색 서비스를 제공하는 인덱스는 2개의 샤드(P0, P1)로 구성되어 Node 2, Node 4에 배치되어 있는 상황 - 현재 생성한 인덱스의 Replica..

Elasticsearch (엘라스틱서치)의 Indexing Process

Step 1. ES는 색인 요청받은 Data를 Inverted Index Data로 변환하여 Indexing Buffer에 기록 (Indexing Buffer는 Lucene 용어로 In-memory buffer) Inverted Index - https://jw92.tistory.com/27 또한 색인을 위한 Data는 Log형태(Index Operation)로 Translog 파일에 기록 Translog는 허용 용량(Default 512Mb)이 초과할 경우 가장 오래된 파일부터 삭제하며 허용 시간(Default 12h)이 지나도 삭제됨 Translog 데이터는 setting에 따라 index request마다 기록할지(default), interval에 따라 async로 기록할지 설정 가능 본 Step..

Elasticsearch (엘라스틱서치) vm.max_map_count 버그 해결

ERROR: [1] bootstrap checks failed [1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144] 별다른 설정없이 엘라스틱서치를 사용하다보면 위와 같은 에러를 마주할 것입니다. 해당 에러는 운영체제가 기본으로 사용하는 mmap 사이즈인 65530이 너무 작아서 발생하는 에러입니다. 위와 같은 버그가 발생 시에 Elasticsearch에서 공식 가이드하고 있어요. www.elastic.co/guide/en/elasticsearch/reference/current/vm-max-map-count.html Virtual memory | Elasticsearch Guide [7..

Elasticsearch (엘라스틱서치) 시작하기 1. 설치 및 configuration (기본적인 설정)

Elasticsearch를 시작할 때, 기본적으로 설정해두면 좋은 설정들이 있다. (Configuration) Ubuntu를 기준으로 설명합니다. (Window도 실행부분 제외하고는 거의 비슷할거같아요) 0. 설치 및 실행 www.elastic.co/kr/downloads/elasticsearch 1. Download and unzip Elasticsearch. 2. Run bin/elasticsearch (or bin\elasticsearch.bat on Windows) 3. Run curl http://localhost:9200/ or Invoke-RestMethod http://localhost:9200 with PowerShell 1. System Configuration 1-1. /etc/sec..

반응형