2014-03-31 1 views
1

나는 elasticsearch가 인덱싱 속도가 너무 느린 이유를 알아 내려고하고 있습니다. 나는 그것이 elasticsearch 자체의 제한인지 아닌지 확신 할 수 없지만 지금까지 가지고있는 것을 공유 할 것입니다.1 천만 회의 이벤트에 대한 elasticsearch의 인덱싱 속도

상자에서 실행되는 단일 elasticsearch 노드와 logstash 인스턴스가 있습니다. 내 문서에는 약 15 개의 필드가 있고 정확한 유형의 탄력적 인 검색 매핑 설정이 있습니다 (매핑없이 시도했지만 거의 동일한 결과가 나옵니다).

한 번에 약 8000 만개의 이벤트를 인덱싱하고 다음과 같은 접근 방식을 취했습니다. 다음 형식

벌크 API는 (I는 JSON에 CSV를 변환하고 난

{"create" : {}} 
{"field1" : "value1", "field2" : "value2 .... } 
{"create" : {}} 
{"field1" : "value1", "field2" : "value2 .... } 
{"create" : {}} 
{"field1" : "value1", "field2" : "value2 .... } 

에서 I는 원래 CSV와 TCP 입력 모두를 사용하거나 사용 logstash 시도했다 컬 파일에 두었다 파일 청취자와 고양이 파일 logstash의 마지막에 CSV는 수신 대기합니다.이 방법의 세 가지

을 매우 느립니다있는 초당 10,000 이벤트를 섭취하는 것.

내가 뭔가 잘못하고 있습니까? 내가 명시 적으로 assi되어야 하는가? 이드를 자동 생성하는 것보다 대량으로 섭취하는 것이 좋을까요?

대량 API를 통해 처리 할 때 이벤트를 50,000 및 100,000 개의 이벤트 파일로 분할하고 각각을 개별적으로 처리했습니다.

답변

1

Youll은이 here에 대한 조사를했는데 인덱싱 스크립트 파일을 다운로드 할 수 있으며 인덱싱 성능을 극대화 할 수있는 유용한 스크립트가 있습니다. 인덱싱을위한 하드웨어 및 Elasticsearch의 최적화는 실제로 다양합니다. 나는. 복제 노드 제거 등

희망이 다소 도움이됩니다.

+2

링크가 없습니다. 여기에 답변을 쓸 수 있습니까? – m3rg

+0

@ m3rg 블로그를 이전하는 과정에서 늦게 답변을 드려 죄송합니다. 오늘 저녁이나 내일이면 내가 가지고있는 것을 게시 할 것입니다. – Nate

+1

링크가 여전히 삭제 된 페이지를 가리키고 있습니다 ... – Mark

7

나는이 blog을 권장합니다. 다음 매개 변수를 조정하면 대량 색인화 중에 도움이되지만 일단 완료되면 refresh_interval을 줄이십시오.

index.store.type: mmapfs 
indices.memory.index_buffer_size: 30% 
index.translog.flush_threshold_ops: 50000 
refresh_interval: 30s 
+0

블로그 게시물이 상당히 오래된 것임에 유의하십시오. 2.x 설치시에는 refresh_interval 만 업데이트합니다. 확인해야 할 사항 : ES가 모든 CPU를 사용하는 경우 (병렬화 할 Logstash의 파이프 라인 스레드 수를 늘려야 할 수도 있음), sweetspot을 찾을 때까지 대량 크기를 조정하고 1.x를 사용하는 경우 스토어 쓰로틀을 늘립니다 병합 한도 (기본값은 20MB/s). ES 측에서는 Logstash의 템플릿을 조정할 수 있습니다 : 필요하면 analyt/not_analyzed 필드 만 사용하고 필요하지 않으면 _all을 비활성화하고 해당 필드를 정렬/분석하지 않으면 doc_values를 비활성화하십시오 –

관련 문제