2013-07-10 5 views
1

ElasticSearch를 사용하여 모든 문서 인덱스를로드하려면 다음 쿼리를 사용하고 있습니다. 각각 totalmaxElasticSearch의 모든 문서를로드하는 데 너무 오래 걸림

def all 
    max = total 
    Tire.search 'my_documents' do 
     query { all } 
     size max 
    end.results.map { |entry| entry.to_hash } 
    end 

는 현재 문서의 수를 반환하는 카운트 쿼리입니다. 약 10,000 개의 문서에 대해 색인을 생성했습니다. 현재 요청이 너무 오래 걸립니다.

나는 이와 같은 모든 문서를 질의해서는 안된다는 것을 알고있다. 가장 좋은 대안은 무엇입니까? 페이지 매김을 사용하여, 그렇다면 어느 쪽을 향하여 페이지 당 문서 수를 정의 할 것입니까?

나는 또한 문서의 크기를 100,000 또는 심지어 1,000,000으로 확장 할 계획이며 아직 어떻게 확장 할 수 있는지 알지 못합니다.

모든 의견에 감사드립니다.


이론적 근거 : 나는이 데이터에 대해 계산을 실행하기 때문에 이것을 수행합니다. 따라서 모든 데이터가 필요하며 계산을 실행하고 결과를 다시 문서에 저장하십시오.

+0

이론적 근거를 계산 유형으로 확장 할 수 있습니다. 특히 문서별로 또는 집계 여부에 따라 확장 할 수 있습니다. Elastic Search *는 클라이언트 기반 검색/계산/업데이트 스크립트보다 효율적일 수있는 이러한 계산 중 일부를 서버에서 수행 할 수 있습니다. –

답변

0

많은 양의 결과를 가져 오기 위해 고도로 최적화 된 스크롤 API를 살펴보십시오. 검색 검색 유형을 사용하며 정렬은 지원하지 않지만 가져올 문서를 필터링하는 쿼리를 제공 할 수 있습니다. 그것에 대해 더 알고 싶다면 reference을보십시오. 요청에서 정의한 크기는 샤드 당임을 기억하십시오. 즉, 기본 샤드가 5 개인 경우 10을 설정하면 요청 당 50 개의 결과가 반환됩니다.

관련 문제