Is there any better way in elasticsearch (other than issuing a match all query and manually averaging over the length of all returned documents) to get the average document
The _size mapping field, if enabled, should give you the size of each document for free. Combining this with the avg aggregation should get you what you want. Something like: