Operations: Server: How to Compact a Database

To compact database, please use CompactDatabaseOperation. You can choose what should be compacted: documents and/or listed indexes.

Syntax

public CompactDatabaseOperation(CompactSettings compactSettings)

public class CompactSettings {
    private String databaseName;
    private boolean documents;
    private String[] indexes;

    // getters and setters
}
Parameters
DatabaseName String Name of a database to compact
Documents boolean Indicates if documents should be compacted
Indexes String[] List of index names to compact

Example I

CompactSettings settings = new CompactSettings();
settings.setDatabaseName("Northwind");
settings.setDocuments(true);
settings.setIndexes(new String[] { "Orders/Totals", "Orders/ByCompany" });

Operation operation = store.maintenance().server().sendAsync(new CompactDatabaseOperation(settings));
operation.waitForCompletion();

Example II

// get all index names
String[] indexNames = store.maintenance().send(new GetIndexNamesOperation(0, Integer.MAX_VALUE));

CompactSettings settings = new CompactSettings();
settings.setDatabaseName("Northwind");
settings.setDocuments(true);
settings.setIndexes(indexNames);

// compact entire database: documents + all indexes
Operation operation = store.maintenance().server().sendAsync(new CompactDatabaseOperation(settings));
operation.waitForCompletion();

Remarks

The compacting operation is executed asynchronously and during this operation the database will be offline.