There can be two options:
1. Document just holds options and its values, and it is up to method performing request to create params array like it was in *addDocument* method. Then *addDocuments* method should create metadata not just take all params set in document by calling *getParams()*
2. Document can provide params for each type of request index/bulk/update and should implement *getIndexOption()* *getBulkOptions()* and *getUpdateOptions()*.