ElasticSearch показывает данные в соответствии с restaurant_id и его средним временем - PullRequest
0 голосов
/ 08 мая 2018

Я новичок в ElasticSearch, и мне интересно, можно ли показать данные в соответствии с restaurant_id, а затем среднее время для подтверждения заказа. например, у меня есть документы:

{ _index: "orders-development",
_type: "order",
_id: "4412917",
_score: 1,
_source: {confirm_duration: 5}
}

{ _index: "orders-development",
_type: "order",
_id: "4412917",
_score: 1,
_source: {confirm_duration: 4}
}

{ _index: "orders-development",
_type: "order",
_id: "4322923",
_score: 1,
_source: { confirm_duration: 12}
}

Выше приведены документы, хранящиеся в ES, и теперь я должен показать данные в соответствии с restaurant_id, а затем среднее время. Поэтому теперь я использую приведенный ниже код и показываю его ошибку «причина»: «[члены] неизвестное поле [avg], синтаксический анализатор не найден»

aggregations = {
  avg_order_confirmation: {
    terms: {
      field: :restaurant_id,
      size: 100,
      avg: { field: :confirm_duration },
    }
  }
}

1 Ответ

0 голосов
/ 08 мая 2018

Вы почти у цели, вам нужно переместить avg в субагрегацию terms единицы:

aggregations = {
  avg_order_confirmation: {
    terms: {
      field: :restaurant_id,
      size: 100
    },
    aggs: {
      avg_confirmation: {
        avg: { field: :confirm_duration }
      }
    }
  }
}
...