2013-10-10 2 views
0

900,000 개의 문서에 색인을 붙이고 싶지만 꽤 오래 걸립니다. 다음 행의 색인을 포함하는 매핑을 정의했습니다.탄성 검색 : 타이어 : 데이터 가져 오기가 너무 느립니다.

indexes :residencies_with_year,  type: 'string',  :as => 'residencies_obj.map{|r| ExpertProfile.residency_with_year_to_s(r)}' 

따라서 모델을 인덱싱 할 때 데이터베이스 쿼리가 많습니다. 기본 설정 인 노드 수 = 1, 샤드 수 = 5, 복제본 수 = 1입니다. 1000 개 문서의 각 배치에 약 15 분이 소요됩니다.

어떻게 속도를 높일 수 있습니까?

여기 난 당신이 시간 범위와 병행 수입을 시도 할 수있는 대안으로

rake environment tire:import CLASS='Expert' FORCE=true 
+0

내용이 큰 경우 가져 오기에는 시간이 걸립니다. elasticsearch에서 인덱싱 할 데이터를 줄일 수 있습니까? 이 경우에는 시간을 할애 할 수 있습니다. 그렇지 않으면 할 수 없습니다. 그러나 1000 개의 문서를 15 분씩받는 것은 너무 많은 시간입니다. 로컬 컴퓨터에서 이것을 실행하고 있습니까? –

+0

타이어 가져 오기는 선택 쿼리 만 사용합니다. –

답변

0

을 사용하고 레이크 명령입니다. 이 경우

rake environment tire:import CLASS='Expert.scoped(:conditions => [created_at<? and created_at>?', Time.now.utc, Time1])' 
rake environment tire:import CLASS='Expert.scoped(:conditions => [created_at<? and created_at>?', Time1, Time2])' 
rake environment tire:import CLASS='Expert.scoped(:conditions => [created_at<? and created_at>?', Time2, Time3])' 

를 강제 옵션을 사용하지 마십시오 이 가져 오기 프로세스의 총 시간 속도를 높일 수 있습니다.

관련 문제