2014-09-11 4 views
1

나는 {"type":"A", "value": 2}, {"type":"B"," value":3}, and {"type":"C","value":7}과 같은 일련의 JSON 문서를 보유하고 있으며이를 탄성 검색에 제공합니다. 탄성 검색 - 롤링 계산

의 내가 탄성 검색 방법의이 것 몽고을 가정 해 봅시다 대 수를 계산하는 방법의 차이는 무엇 "type": "A"

모든 문서 평균 값으로 하나 개의 쿼리를 수행 할 가정 해 봅시다?

  1. 자동으로 새로운 데이터로 "typeA_sum", "typeA_count" "typeA_avg"같은 무언가를 증가 모든 유형의 "롤링 수"와 을 만드는

    가에 공급된다 :

    탄력 검색입니까? 그렇다면 달콤한 것이기 때문에 실제로는 아무 것도 계산하지 않아도됩니다.
  2. 인덱스를 입력하고 실제로 쿼리를 실행할 때마다 합계를 계산합니까?
  3. 백그라운드에서 (즉 사전 계산) 을 수행하고 있고 일부 캐시 값을 업데이트하고 있으므로 쿼리를 실행하면 결과가 매우 빨리 나타납니다.

답변

1

결과는 캐시되므로 결과가 매우 빠른 후속 쿼리에 유용하면 캐시됩니다. Elasticsearch가 어떤 쿼리를 실행할지 미리 알 수있는 방법이 없기 때문에 # 1은 불가능하고 # 3은 낭비입니다.

그러나 예를 들어 두 가지 쿼리가 필요하지 않은 경우에는 충분합니다. count, min, max, average 및 sum을 반환하는 stats aggregation을 참조하십시오. terms aggregation (및 아마도 missing aggregation)과 결합하여 type 필드에서 문서를 그룹화하면 단일 쿼리로 모든 유형에 대한 개수 및 평균 (및 최소, 최대, 합계)을 따로 얻을 수 있습니다.

+0

감사합니다. # 1의 경우 Elastic Search에 정보를 알릴 수 있다고 생각했습니다. 그래서 당신의 대답에 근거하여 다음 질문은 Mongo를 사용하는 것보다 이것이 더 나은 이유는 무엇입니까? – K2xL

+0

이런 의미에서 나는 몽고 밥보다 "낫다"라고 생각하지 않습니다. – Anton