Advice needed: tagging and searching a RIVER

I'd like to annotate (or tag) each incoming document with a set of
<name/value> pairs. Later, I'd like to search on the names. I'd like
to aggregate the results into facets. When I search, I'd like to score
each document using the values embedded in the name/value pairs. Then,
I'd like to get ALL documents matching a query along with their custom
scores, sum the scores up per facet, and return the aggregate score
per facet. Occasionally, I may retag the documents, i.e. change the
set of name/value pairs associated with all documents.

My document set will be VERY large, but the documents themselves will
be small.

What is the best way of accomplishing this feat with ElasticSearch?