2021/01 4

Elasticsearch의 Translog 설명

Lucene을 공부하면서 실제 세그먼트를 조작 하고 인덱싱을 반영 하는 부분을 보면서 Lucene에 commit에 대해서 공부했었다. wedul.site/678 Lucene의 commit과 flush의 차이 Lucene에서 데이터 색인을 위해서 사용하는 IndexWriter의 flush와 commit 두 가지 command의 차이를 정리해보자. 두 개의 operation 이름만 보게되면 동일한 동작을 수행할 것 같지만 실질적으로 다른 동작을 wedul.site 그럼 실제로 Elasticsearch에서 이 Lucene commit에 영향을 받는 부분이 어디인지 알아보게 되면서 translog에 대해 공부해봤다. 우선 translog는 양 자체가 워낙 방대하기 때문에 성능을 위해서는 이 부분에 대한 튜닝이 ..

Lucene의 commit과 flush의 차이

Lucene에서 데이터 색인을 위해서 사용하는 IndexWriter의 flush와 commit 두 가지 command의 차이를 정리해보자. 두 개의 operation 이름만 보게되면 동일한 동작을 수행할 것 같지만 실질적으로 다른 동작을 수행한다. 우선 공통적으로 commit과 flush는 둘 다 메모리에 있는 데이터를 디스크에 쓰는 작업을 한다. 하지만 이 부분에 차이점이 있는데 commit은 인덱스를 업데이트하여 디스크에 데이터를 바로 찾을 수 있도록 하는 추가작업을 수행한다. 그래서 만약 lucene IndexWriter에서 flush만 수행하고 commit을 하지 않았다면 해당 인덱스에 대한 변경사항은 검색할 수 없다. 그렇다면 commit을 수행하고 flush를 하지 않는다면 어떻게 될까? 이 ..

Lucene 기본, 색인, 성능 최적화 정리

용어 정리 재현율 검색 시스템에서 관련된 문서를 얼마나 빼먹지 않고 찾아두는지 정확도 검색 시스템에서 사용자가 입력한 검색어와 관련없는 문서를 얼마나 정확하세 제거 하는지 fuzzy 레빈슈타인 편집거리를 통해서 입력한 텀과 유사한 텀을 가진 문서를 찾아줌 비교되는 두 단어의 추가, 수정, 삭제에 대한 비용 처리를 하며 비용이 높을수로 서로 다른 term 검색 모델 순수 boolean 모델 지정된 질의에 문서가 해당하는지 아니면 해당하지 않는지를 판단하며 별도의 계산 부분이 없다. 벡터 공간 모델 질의와 문서 모두 고차원(차원은 term을 의미)의 벡터로 표현. 벡터간의 거리를 계산하면 문서와 질의 사이의 연관도나 유사도를 산출 할 수 있다. 확률모델 확률적인 방법을 통해 개별 문서가 질의와 일치하는 확률..

elasticsearch metric 수집 방법

Elasticsearch metric 정보 수집관련해서 요근래 질문을 받았었다. 처음에는 java application이라면 기본적으로 생각하는 JMX metric을 고려했었으나 그때 당시에 이 community를 보고 직접 aggregation해서 influxdb에 수집하는 방법을 선택했던게 생각난다. (실제로 내 입장에서는 jmx로 metric 정보를 보는게 너무 불편했다.) 또 aggregation할 때 spring actuator micrometer를 사용하려 했으나 이곳에서 모으는 데이터를 정제해서 보고자 하는 데이터 형태로 influxdb에 넣는건 좋지 못한 방법이었다. 그래서 결국 pooling방식으로 얻고자 하는 클러스터에 직접 stats관련된 http api를 요청해서 잘 조립해서 inf..