2016-06-29 2 views
2

Основание на official document, похоже, может сортироваться только по агрегату с одним ковшом. Как я могу сортировать результаты по 'avg' в количестве агрегации ведер?Как я могу сортировать ведра скоплений по метрическим результатам?

Я добавил 'заказ' в 'result_1' все еще не работающий. Это показывает ошибку ниже:

TransportError(500, u'search_phase_execution_exception') 
Invalid terms aggregation order path [reverse>condi_range>statistic_score.avg]. 
Terms buckets can only be sorted on a sub-aggregator path that is built out of zero or more single-bucket aggregations within the path and a final single-bucket or a metrics aggregation at the path end. 
Sub-path [reverse>condi_range] points to non single-bucket aggregation') 

Ключевым моментом является то, что я должен ограничить диапазон на «float_field», а range aggregation еще один агрегацию ведра.

У кого-нибудь есть идеи?

Спасибо!

Пример кода:

{ 
    "aggs": { 
    "condi_nested": { 
     "aggs": { 
     "filtered": { 
      "filter": { 
      "bool": {} 
      }, 
      "aggs": { 
      "result_1": { 
       "terms": { 
       "field": "Foo", 
       "size": 100000000, 
       "order": { 
        "reverse>condi_range>statistic_score.avg": "desc" 
       } 
       }, 
       "aggs": { 
       "reverse": { 
        "aggs": { 
        "condi_range": { 
         "range": { 
         "ranges": [ 
          { 
          "to": 100, 
          "from": 0 
          } 
         ], 
         "field": "float_field" 
         }, 
         "aggs": { 
         "percentile_score": { 
          "percentiles": { 
          "field": "float_field" 
          } 
         }, 
         "statistic_score": { 
          "extended_stats": { 
          "field": "float_field" 
          } 
         } 
         } 
        } 
        }, 
        "reverse_nested": {} 
       } 
       } 
      } 
      } 
     } 
     }, 
     "nested": { 
     "path": "nested_path_of_Foo" 
     } 
    } 
    } 
} 

ответ

0

Я просто понять, где проблема.

Используйте «фильтр» заменить «диапазон»

{ 
    "aggs": { 
    "condi_range": { 
     "filter": { 
     "range": { 
      "float_field": { 
      "gte": 0, 
      "lte": 100 
      } 
     } 
     }, 
     "aggs":{ 
     ...blahblahblah... 
     } 
    } 
    } 
} 

Но я нашел еще одну проблему после проблемы спросил я.

Я не могу сортировать поле после вложенных агрегаций, поднять ту же ошибку, отправленную в вопросе.

Вот пример:

{ 
    "aggs": { 
    "result_1": { 
     "terms": { 
     "field": "Foo", 
     "order": { 
      "condi_nested>filtered>condi_range>statistic_score.min": "desc" 
     }, 
     "size": 100000000 
     }, 
     "aggs": { 
     "condi_nested": { 
      "aggs": { 
      "filtered": { 
       "filter": { 
       "bool": {} 
       }, 
       "aggs": { 
       "condi_range": { 
        "filter": { 
        "range": { 
         "nested_path_of_float_field.float_field": { 
         "gte": 0, 
         "lte": 100 
         } 
        } 
        }, 
        "aggs": { 
        "statistic_score": { 
         "extended_stats": { 
         "field": "nested_path_of_float_field.float_field" 
         } 
        } 
        } 
       } 
       } 
      } 
      }, 
      "nested": { 
      "path": "nested_path_of_float_field" 
      } 
     } 
     } 
    } 
    } 
} 

и это

{ 
    "aggs": { 
    "condi_nested": { 
     "aggs": { 
     "filtered": { 
      "filter": { 
      "bool": {} 
      }, 
      "aggs": { 
      "result_1": { 
       "terms": { 
       "field": "Foo", 
       "order": { 
        "reverse>condi_nested>condi_range>statistic_score.min": "desc" 
       }, 
       "size": 100000000 
       }, 
       "aggs": { 
       "reverse": { 
        "aggs": { 
        "condi_nested": { 
         "aggs": { 
         "condi_range": { 
          "filter": { 
          "range": { 
           "nested_path_of_float_field.float_field": { 
           "gte": 0, 
           "lte": 100 
           } 
          } 
          }, 
          "aggs": { 
          "percentile_score": { 
           "percentiles": { 
           "field": "nested_path_of_float_field.float_field" 
           } 
          }, 
          "statistic_score": { 
           "extended_stats": { 
           "field": "nested_path_of_float_field.float_field" 
           } 
          } 
          } 
         } 
         }, 
         "nested": { 
         "path": "nested_path_of_float_field" 
         } 
        } 
        }, 
        "reverse_nested": {} 
       } 
       } 
      } 
      } 
     } 
     }, 
     "nested": { 
     "path": "nested_path_of_Foo" 
     } 
    } 
    } 
}