ElasticSearch 설명서에서 the example과 비슷한 집계를 분할하려하지만 예제가 작동하지 않습니다.그룹으로 그룹화하는 파티션
public class Event
{
public int EventId { get; set; }
public string SegmentId { get; set; }
public DateTime Timestamp { get; set; }
}
EventId
고유 각 이벤트는 특정 SegmentId
속한다 :
인덱스는 이벤트 유형 채워져있다. 각 SegmentId는 0에서 많은 이벤트와 연관 될 수 있습니다.
질문 : 가 어떻게 각 SegmentId
에 대한 최신 EventId
을받을 수 있나요?
고유 한 세그먼트의 수가 10 백만 개가되고 고유 한 이벤트의 수가 1 ~ 2 개 더 커질 것으로 예상됩니다. 그렇기 때문에 top_hits
을 단독으로 사용하는 것이 적절하지 않다고 생각합니다. suggested here. 따라서 파티셔닝.
예 : I (101)가 별개 SegmentId
(즉, 세그먼트 당 13 건)에 속하는 (EventId
고유) 1,313 문서 채워 데모 인덱스를 설정
. 아래의 쿼리가 작동 할 것으로 기대하지만 정확한 숫자는 partition
숫자와 관계없이 반환됩니다. 나는 include
를 제거하고보다 큰 값 (101)에 size
을 설정하면
POST /demo/_search
{
"size": 0,
"aggs": {
"segments": {
"terms": {
"field": "segmentId",
"size": 15, <-- I want 15 segments from each query
"include": {
"partition": 0, <-- Trying to retrieve the first partition
"num_partitions": 7 <-- Expecting 7 partitions (7*15 > 101 segments)
}
},
"aggs": {
"latest": {
"top_hits": {
"size": 1,
"_source": [
"timestamp",
"eventId",
"segmentId"
],
"sort": {
"timestamp": "desc"
}
}
}
}
}
}
}
, 나는 모든 세그먼트에 대한 최신 이벤트를 얻을. 그러나 나는 그것이 백만 개의 양동이가있는 좋은 방법이라고는 생각하지 않습니다 ...
내가 원했던 것은 집계에 대한 스크롤이었습니다. 이는 지원되지 않습니다. 그러나, 나는 그것을 파티션으로 해결했다. (필자의 대답을 보라). 그래도 제안 해 주셔서 감사합니다! 다른 상황에서 유용 할 수도 있습니다! (: – Reyhn