Elasticsearch 기타 항목
4822 단어 elasticsearch
1.elasticsearch는 어떻게 마스터 선거를 실현합니까
elasticsearch 선주는 zenDiscovery 모듈이 책임지고 주로 ping(노드 간의 RPC를 통해 서로를 발견)과 Unicast(단방 모듈은 호스트 목록을 포함하여 그 노드를 제어하기 위해 ping통을 필요로 한다).마스터가 될 수 있는 모든 노드(node.master:true)에 대해nodeId 사전 정렬에 따라 매번 선거마다 자신이 알고 있는 노드를 순서대로 배열한 다음에 첫 번째 노드(0위)를 선택하여 마스터 노드로 간주합니다.만약에 어떤 노드에 대한 투표수가 일정한 값(master 노드 수 n/2+1이 될 수 있음)에 도달하고 이 노드 자신도 자신을 선택한다면 이 노드가 바로 master이다.그렇지 않으면 상술한 조건을 충족시킬 때까지 재선거할 것이다.
2.es 데이터 작성 프로세스
3.es 데이터 읽기 프로세스
docid를 통해 조회할 수 있습니다.docid에 따라hash를 진행합니다. 당시 docid가 그shard 위에 분배되었음을 판단하고 그shard에서 조회합니다
4.es 쓰기 데이터의 밑바닥 원리
1). document는 메모리 버퍼에 쓰고translog 로그를 씁니다
2). refresh 작업이 실시간 검색인 이유: 새 세그먼트 (추가 역렬 인덱스) 를 작성하고 열기 위한 경량 프로세스를 refresh라고 합니다.1초마다 버퍼의 데이터를 새 segement로 만듭니다.이 새 세그먼트는 파일 시스템 캐시에 먼저 기록되고 나중에 디스크로 불러옵니다.그러나 파일이 캐시에 있으면 다른 파일처럼 열리고 읽을 수 있습니다.메모리 버퍼가 비워졌습니다.이 때 새로운segment의 파일이 검색될 수 있습니다. 이것은 문서가 검색될 때까지 1초가 걸릴 수 있음을 의미합니다. 이 속성을 변경하려면 다음과 같은 작업을 수행할 수 있습니다.
put /index_test
{
"settings":
{
"refresh_interval":"30s"
}
}
3). flush 작업은 지속적인 변경을 초래합니다. 제출을 실행하고translog를 차단하는 행위는Elasticsearch에서flush라고 합니다.리셋 (refresh) 이 완료되면 캐시가 비워졌지만translog 로그는 비워집니다.translog 로그도 점점 많아질 것입니다. translog 로그가 한 한도값보다 크거나 30분이면flush 작업을 보냅니다.
조각이 30분마다 자동으로 (flush) 나translog가 너무 크면 리셋됩니다.flush 명령으로 수동으로 실행할 수도 있습니다.
translog는 5초마다 디스크에 기록됩니다. (따라서 이 5s의 데이터가cache에 있고 로그가 오래 지속되지 않으면 잃어버립니다.)한 번의 삭제 수정 작업 후translog는replica와primaryshard에서 모두 성공해야만 성공할 수 있습니다. 조작 속도를 높이려면 비동기적으로 설정할 수 있습니다
PUT /index_test
{
"settings": {
"index.translog.durability": "async" ,
"index.translog.sync_interval":"5s"
}
}
그래서 총괄적으로 세 가지 작업이 있는데 1초에 한 번refresh는 실시간을 확보하고 5초에 한 번은translog의 지구화를 보증한다. 데이터가 지구화되기 전에 밑바닥을 남기고 30분에 한 번 지구화를 한다.
4.es 데이터 검색 프로세스
클라이언트가coordinate node로 보냅니다.
조정 노드는 검색 요청을 모든shard에 대응하는primaryshard나replicashard로 전송할 수 있습니다.
query phase: 모든shard는 자신의 검색 결과(doc id)를 조율 노드에 되돌려주고 조율 노드에서 데이터 통합, 정렬, 페이지 나누기 등 조작을 하여 최종 결과를 산출합니다.
fetchphase: 이어서 조율 노드가 doc id에 따라 형 노드에서 실제 문서 데이터를 추출하여 클라이언트에게 되돌려줍니다.
5.translog와commitpoint의 데이터 복구
디스크에 지난번 지속적인commitpoint가 있습니다.translog에commitpoint가 있습니다. 이 두 개의commitpoint에 따라translog의 변경 기록을 답방하여 이전의 작업을 다시 실행합니다.
6. 삭제 및 업데이트 방법
문서가 삭제되었는데, 실제로는 그저 있습니다.del 파일에서 삭제가 표시됩니다.삭제된 문서는 검색에 일치할 수 있지만, 최종 결과가 되돌아오기 전에 결과에서 제거됩니다.
문서 업데이트도 비슷한 작업 방식입니다. 문서가 업데이트되면 이전 버전의 문서가 삭제되고 문서의 새 버전이 새 세그먼트로 인덱스됩니다.두 버전의 문서는 모두 조회에 일치할 수 있지만, 삭제된 이전 버전의 문서는 결과집이 돌아오기 전에 제거됩니다.
segment가 통합될 때 삭제된 문서는 삭제됩니다.삭제된 문서 (또는 업데이트된 문서의 이전 버전) 는 새 큰 segement로 복사되지 않습니다.
7.segment 병합
버퍼 데이터는segment에 갱신되기 때문에segment는 매우 많습니다. 이런 상황을 방지하기 위해es는 작은 segment를 통합합니다.그리고 물리적으로 소segement를 삭제합니다.
세그먼트 병합 명령 수동 실행
POST /index_test/_forcemerge?max_num_segements=1
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
kafka connect e elasticsearch를 관찰할 수 있습니다.No menu lateral do dashboard tem a opção de connectors onde ele mostra todos os clusters do kafka connect conectados atu...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.