2017-02-21 3 views
0

주어진 데이터 모델 구조,집계 된 버킷 키를 필터링 하시겠습니까? 이 같은

{ 
    Id: 123, 
    "string_facet": [ 
     { 
      "name": "make", 
      "value": "Audi" 
     }, 
     { 
      "name": "carListType", 
      "value": "PERSON EU" 
     }, 
     { 
      "name": "modelType", 
      "value": "" 
     }, 
     { 
      "name": "engineBrand", 
      "value": "APT" 
     }, 
     { 
      "name": "typeDescription", 
      "value": "8D2" 
     } 
    ], 
    "number_facet": [ 
     { 
      "name": "typeNumber", 
      "value": 4614 
     }, 
     { 
      "name": "serialNumber", 
      "value": 2 
     }, 
     { 
      "name": "engineSize", 
      "value": 18 
     }, 
     { 
      "name": "horsePower", 
      "value": 125 
     }, 
     { 
      "name": "kw", 
      "value": 92 
     }, 
     { 
      "name": "engineVolume", 
      "value": 1781 
     }, 
     { 
      "name": "listType", 
      "value": 0 
     } 
    ], 
    "dateTime_facet": [ 
     { 
      "name": "fromDate", 
      "value": "1999-04-01T00:00:00" 
     }, 
     { 
      "name": "toDate", 
      "value": "2000-10-01T00:00:00" 
     } 
    ]  
} 

나는 집계 값 이름 당을 이름을 패싯하고 싶어. 그러나 다음과 같이 특정 이름을 가진면에만 관심이 있습니다. engineBrand. 파셋은 중첩 된 유형입니다.

다음과 같은 .NEST 표현식을 시도했지만 여전히 모든 패싯 이름을 반환합니다.

.Global("global", g => g 
    .Aggregations(ag => ag 
     .Filter("global_makes", f => f 
      .Filter(ff => ff 
       .Nested(n => n 
       .Path("string_facet") 
       .Filter(pf => pf.Term("string_facet.name", "make"))) 
       ) 
       .Aggregations(agg => agg 
        .Nested("nested_string_facet", nested => nested 
         .Path("string_facet") 
         .Aggregations(stringFacet => stringFacet 
          .Terms("name", nameAgg => nameAgg.Field("string_facet.name").Size(0) 
           .Aggregations(nameAggNext => nameAggNext 
            .Terms("value", valueAgg => valueAgg.Field("string_facet.value").Size(0)) 
           ) 
          ) 
         ) 
        ) 
       ) 
      ) 
     ) 
    ) 
); 

내가 지구 내에서 필터가 (쿼리에서 통과의 범위를 잃고), 다음 전용 "확인"일치 string_facet.name 필터링,하지만 결과는 여전히뿐만 아니라 다른 모든 이름이 사용될 수 있습니다. 이름이이 "make"인 버킷 만 포함하도록 집계를 필터링하는 방법은 무엇입니까?

답변

관련 문제