Lucene
-
elasticsearch sprase docvalueelasticsearch 2021. 4. 13. 20:22
docvalue에 대한 기본 개념은 아래 링크를 참고하자 ksk-developer.tistory.com/29 Elasticsearch(with lucene) DocValue 에 대해서 알아보자 루씬은 검색을 효율적으로 하기위해 역색인 구조로 저장하는데 검색 시에는 유리한 구조이지만 정렬, 집계일 경우에는 그렇지 않다 그래서 그것을 보안하기 위해 DocValues란 구조를 사용한다 루 ksk-developer.tistory.com 조금 더 왜 사용하는지 알고 싶다면 아래 링크까지 참고하자 ksk-developer.tistory.com/30 컬럼 기반 저장소 와 행 기반 저장소 컬럼 기반 저장소에 대해서 알지 못했는데 es에서 field_datta, doc_value에 대해서 알아보다 컬럼 기반 저장소를 사..
-
elasticsearch search type query then fetch and dfselasticsearch 2021. 3. 25. 21:51
GET test/_search?search_type=dfs_query_then_fetch { "query": { "match_phrase_prefix": { "title": { "query": "d", "max_expansions": 5 } } } } 응답 결과 "_score" : 1.0, "_source" : {"title":"drunk"} "_score" : 0.30685282, "_source" : {"title":"dzone"} "_score" : 0.30685282, "_source" : {"title":"data"} "_score" : 0.30685282, "_source" : {"title":"drive"} 왜 "drunk"라는 값을 포함하는 문서의 스코어만 1.0이고 그 외에는 0.3일까?..
-
elasticsearch segments 병합 전략과 스케줄링elasticsearch 2021. 3. 23. 23:20
세그먼트 병합 전략과 스케줄링 세그먼트의 병합은 성능 향상에 매우 중요하므로 병합 정책이 존재하는데 방식이 2가지가 있다 LogMergePolicy와 tieredMergePolicy 총 두 가징이다 LogMergeerPolicy 용량이 급증하는 세그먼트 병합 방법 중 Merge Factor 기반으로 하는 병합 정책이다. Merge Factor(이하 mf)는 일종의 세그먼트 병합 기준 수치라고 할 수 있는데 세그먼트는 mf로 설정된 수보다 작은 수의 세그먼트를 가지며 이 수를 넘어서게 되면 병합이 발생하게 된다 mf가 자주 발생하면 검색 속도는 향상이 되겠지만 색인에는 많은 시간과 자원이 발생하게 된다 반대로 너무 길면 검색 속도는 느려지고 색인 시에 비용은 줄어들게 된다 mf의 기본 값은 10이고 다시 ..
-
elasticsearch segments 1부elasticsearch 2021. 3. 20. 14:17
세그먼트란? 루씬의 색인은 물리적 세그먼트로 구성되어 있으며 세그먼트를 간당히 정의하면 색인된 도큐먼트 모음이다 세그먼트는 독특한 색인 구조가 성능과 직결되기 때문에 상당히 중요하므로 잘 살펴볼 필요가 있다 세그먼트는 RAM과 DISK에 저장된다 색인 안에는 수많은 세그먼트가 있고 세그먼트 안에는 수많은 도큐먼트가 있다 lucene.apache.org/core/6_4_0/core/org/apache/lucene/codecs/lucene62/package-summary.html#package.description 세그먼트의 구성 하나의 세그먼트는 여러 개의 파일로 구성된다 세그먼트에는 도큐먼트 필드 뿐만아니라 효과적인 검색에 필요한 다양한 정보가 담겨있다 위 그림은 세그먼트로 구성된 색인인데 팡일 이름에 ..
-
elasticsearch(with lucene) force-merge에 대해서elasticsearch 2021. 3. 7. 11:51
merging하는 것은 그들 함께 merging함으로써 각 샤드의 세그먼스 수를 줄인다 또한 문서를 삭제함으로써 공간을 줄일 수도 있고 압축률 또한 좋아지고 중복된 데이터를 줄일 수도 있으며 세그먼트 수도 줄어들기 때문에 인덱스에 대한 검색, 집계와 정렬 할 때 좋다 보통 merging은 자동적으로 일어나게 되지만 때로는 merge 기능을 호출하여 유용하게 사용할 수도 있다 주의 할점은 force-merge(이하 fm)는 쓰기를 하지 않는 인덱스에만 적용해야 한다 지금은 수정 입력 삭제가 없더라도 미래에 생긴다면 주기적인 fm은 하지 않아야 한다 대신 백그라운드 merge 정책에 의존하면 된다 fm을 수행하고, 수행하면서 계속 쓰기 작업을 한다면 성능이 안좋아질 것이다 검색하다보니 두가이 이유가 있는데 ..