Я понимаю, что задача поиска может получить выгоду от инвертированного индекса в Elasticsearch.
Но я не понимаю, как задача агрегации извлекает выгоду из инвертированного индекса.Например, если у нас есть документы ниже
id, name, gender, age, weight
1, Tom, m, 29, 100
2, James, m, 28, 120
3, Lucy, f, 27, 80
4, Kevin, m, 28, 150
5, Jessica,f, 22, 100
....
Если я хочу получить средний вес для возраста = 28, с использованием перевернутого индекса упругого поиска шаги должны быть такими:
1. get the doc list of age = 28 which may looks like [id=2, id=4 ...]
2. Read each doc to get the weight
3. Add the weight and divide by the number of records
Этоне кажется эффективным, особенно для этапа 2. Поскольку расположение документа на диске не является смежным, поэтому Elasticsearch не может загрузить данные за одно чтение, его нужно читать много раз.
Так почему же Elasticsearch может иметь такую хорошую производительность при агрегации?Использует ли он какую-то другую структуру данных помимо инвертированного индекса для агрегирования?Мое понимание неправильно для шагов агрегации?