elasticsearch
-
elasticsearch failed to flush export bulk [default_local]elasticsearch 2021. 5. 2. 17:35
우리 서버에 matrix를 설치한 뒤 보니 failed to flush export bulk 와 같은 에러가 나고 있었다 물론 서비스 이슈는 없었지만 당연히 제거해야 될 에러였다 [2021-04-29T23:27:04,206][WARN ][o.e.x.m.MonitoringService] [xxxx] monitoring execution failed org.elasticsearch.xpack.monitoring.exporter.ExportException: failed to flush export bulks at org.elasticsearch.xpack.monitoring.exporter.ExportBulk$Compound.lambda$doFlush$0(ExportBulk.java:109) [x-pack-..
-
elasticsearch storefield and docvalues and _source 비교elasticsearch 2021. 4. 26. 21:40
store field와 docvalues가 각각 어떻게 저장되는지 알아보고 퍼포먼스가 어떻게 될지 확인해본다 store field는 검색하기 위해 사용되는 필드이다 https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-store.html#mapping-store store | Elasticsearch Guide [7.12] | Elastic Stored fields returned as arrays For consistency, stored fields are always returned as an array because there is no way of knowing if the original field value was a..
-
elasticsearch index sorting으로 퍼포먼스 향상elasticsearch 2021. 4. 21. 21:42
sorting index는 루씬에서 sorting을 지원하기 위해 indexSorter라는 것을 도입해 검색 시점이 아니라 색인과 병합 시점에 문서를 정렬하는 방법을 제공하고 검색 포퍼먼스 향상을 위해서 도입된 개념이다 예시를 통해 알아보자 PUT scores { "settings": { "index": { "sort.field": "points", "sort.order": "desc" } }, "mappings": { "properties": { "points": { "type": "date" } } } } GET scores/_search { "size": 3, "sort": [ { "points": "desc" } ] } 쉽게 알기 위해서 1 나의 샤드에서 세그먼트가 1나만 존재한다고 했을 때 인덱..
-
elasticsearch는 어떤 segment 부터 읽을까?elasticsearch 2021. 4. 16. 21:09
오래된 segment? 가장 최근에 만들어진 segment? elasticsearch를 공부하면서 그냥 든 생각이 가장 오래 된 segment이 가장 최적화가 되어있을 가능성(물론 용량이 큰 파일은 삭제된 문서가 어느정도 선일 때는 머지되지 않아 비효율 적일 수도 있음)과 데이터가 많으므로 데이터를 찾을 수 있을 가능성이 더 높다고 생각을 했었었다 그러나 elasticsearch의 기반이 된다는 LSM(log structure merge) Tree를 공부할 때에는 가장 최근에 만들어진 파일부터 읽는다고 해서 궁금해서 여러 자료를 서치해봤지만 내 능력 밖인지 찾지를 못했다 그래서 별거는 아니지만 es는 필터를 주면 들어간 값 대로 리스팅 되므로 그것을 이용해서 테스트 해보기로 했다 인덱스를 생성 PUT m..
-
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 segments 2부elasticsearch 2021. 3. 27. 11:58
색인 작업 시 세그먼트의 기본 동작 방식 루씬 인덱스는 내부적으로 다수의 세그먼트로 구성되어 있다 루씬은 검색 요청을 받으면 다수의 세그먼트 조각들이 각각 검색 결과를 만들어 내고 이를 통합해서 하나의 결과로 합쳐서 응답하도록 설계되어 있다 이러한 검색 방식을 세그먼트 단위 검색(Per-Segment Search)라고한다 루씬은 위의 이미지와 같이 세그먼트들을 관리하기 위한 용도로 커밋 포인트(Commit Point)라는 자료구조를 제공한다 커밋 포인트는 여러 세그먼트의 목록 정보를 가지고 이고 검색시 이를 적극적으로 활용한다 루씬의 IndexSearcher는 검색 요청시 커밋 포인트를 이용해 가장 오래된 세그먼트부터 차례대로 검색한 후 각 결과를 하나로 합쳐서 제공한다 색인 요청이 루씬에 들어오면 In..
-
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 세그먼트의 구성 하나의 세그먼트는 여러 개의 파일로 구성된다 세그먼트에는 도큐먼트 필드 뿐만아니라 효과적인 검색에 필요한 다양한 정보가 담겨있다 위 그림은 세그먼트로 구성된 색인인데 팡일 이름에 ..