docs-site/content/0.25.0/api/cluster-operations.md
Creates a point-in-time snapshot of a Typesense node's state and data in the specified directory.
You can then backup the snapshot directory that gets created and later restore it as a data directory, as needed.
<Tabs :tabs="['JavaScript','PHP','Python','Ruby','Dart','Java','Swift','Shell']"> <template v-slot:JavaScript>client.operations.perform('snapshot', {'snapshot_path': '/tmp/typesense-data-snapshot'})
$client->operations->perform("snapshot", ["snapshot_path" => "/tmp/typesense-data-snapshot"]);
client.operations.perform('snapshot', {'snapshot_path': '/tmp/typesense-data-snapshot'})
client.operations.perform('snapshot', {'snapshot_path': '/tmp/typesense-data-snapshot'})
await client.operations.createSnapshot('/tmp/typesense-data-snapshot');
HashMap<String, String> query = new HashMap<>();
query.put("snapshot_path","/tmp/typesense-data-snapshot");
client.operations.perform("snapshot",query);
try await client.operations().snapshot(path: "/tmp/typesense-data-snapshot")
curl "http://localhost:8108/operations/snapshot?snapshot_path=/tmp/typesense-data-snapshot" -X POST \
-H "Content-Type: application/json" \
-H "X-TYPESENSE-API-KEY: ${TYPESENSE_API_KEY}"
{
"success": true
}
POST ${TYPESENSE_HOST}/operations/snapshot
| Parameter | Required | Description |
|---|---|---|
| snapshot_path | yes | The directory on the server where the snapshot should be saved. |
Typesense uses RocksDB to store your documents on the disk. If you do frequent writes or updates, you could benefit from running a compaction of the underlying RocksDB database. This could reduce the size of the database and decrease read latency.
While the database will not block during this operation, we recommend running it during off-peak hours.
curl -H "X-TYPESENSE-API-KEY: ${TYPESENSE_API_KEY}" -X POST http://localhost:8108/operations/db/compact
POST ${TYPESENSE_HOST}/operations/db/compact
Triggers a follower node to initiate the raft voting process, which triggers leader re-election.
The follower node that you run this operation against will become the new leader, once this command succeeds.
<Tabs :tabs="['JavaScript','PHP','Python','Ruby','Dart','Java','Swift','Shell']"> <template v-slot:JavaScript>client.operations.perform('vote')
$client->operations->perform("vote");
client.operations.perform('vote')
client.operations.perform('vote')
await client.operations.initLeaderElection();
client.operations.perform("vote");
try await client.operations().vote()
curl "http://localhost:8108/operations/vote" -X POST \
-H "Content-Type: application/json" \
-H "X-TYPESENSE-API-KEY: ${TYPESENSE_API_KEY}"
{
"success": true
}
POST ${TYPESENSE_HOST}/operations/vote
Enable logging of requests that take over a defined threshold of time.
Default: -1 which disables slow request logging.
Slow requests are logged to the primary log file, with the prefix SLOW REQUEST.
await client.operations.toggleSlowRequestLog(Duration(seconds: 2));
try await client.operations().toggleSlowRequestLog(seconds: 2)
curl "http://localhost:8108/config" \
-X POST \
-H 'Content-Type: application/json' \
-H "X-TYPESENSE-API-KEY: ${TYPESENSE_API_KEY}" \
-d '{"log-slow-requests-time-ms": 2000}'
{
"success": true
}
POST ${TYPESENSE_HOST}/config
Get current RAM, CPU, Disk & Network usage metrics.
<Tabs :tabs="['Dart','Java','Swift','Shell']"> <template v-slot:Dart>await client.metrics.retrieve();
client.metrics.retrieve();
let (metrics, response) = try await client.operations().getMetrics()
curl "http://localhost:8108/metrics.json" \
-H "X-TYPESENSE-API-KEY: ${TYPESENSE_API_KEY}"
{
"system_cpu1_active_percentage": "0.00",
"system_cpu2_active_percentage": "0.00",
"system_cpu3_active_percentage": "0.00",
"system_cpu4_active_percentage": "0.00",
"system_cpu_active_percentage": "0.00",
"system_disk_total_bytes": "1043447808",
"system_disk_used_bytes": "561152",
"system_memory_total_bytes": "2086899712",
"system_memory_used_bytes": "1004507136",
"system_network_received_bytes": "1466",
"system_network_sent_bytes": "182",
"typesense_memory_active_bytes": "29630464",
"typesense_memory_allocated_bytes": "27886840",
"typesense_memory_fragmentation_ratio": "0.06",
"typesense_memory_mapped_bytes": "69701632",
"typesense_memory_metadata_bytes": "4588768",
"typesense_memory_resident_bytes": "29630464",
"typesense_memory_retained_bytes": "25718784"
}
GET ${TYPESENSE_HOST}/metrics.json
Get stats about API endpoints.
This endpoint returns average requests per second and latencies for all requests in the last 10 seconds.
<Tabs :tabs="['Dart','Swift','Shell']"> <template v-slot:Dart>await client.stats.retrieve();
let (stats, response) = try await client.operations().getStats()
curl "http://localhost:8108/stats.json" \
-H "X-TYPESENSE-API-KEY: ${TYPESENSE_API_KEY}"
{
"latency_ms": {
"GET /collections/products": 0.0,
"POST /collections": 4.0,
"POST /collections/products/documents/import": 1166.0
},
"requests_per_second": {
"GET /collections/products": 0.1,
"POST /collections": 0.1,
"POST /collections/products/documents/import": 0.1
}
}
GET ${TYPESENSE_HOST}/stats.json
Get health information about a Typesense node.
<Tabs :tabs="['Dart','Swift','Shell']"> <template v-slot:Dart>await client.health.retrieve();
let (healthStatus, response) = try await client.operations().getHealth()
curl "http://localhost:8108/health"
{
"ok": true
}
GET ${TYPESENSE_HOST}/health