@node-ts-cache/elasticsearch-storage
v1.0.1
Published
Elasticsearch storage adapter for node-ts-cache
Downloads
28
Maintainers
Readme
@node-ts-cache/elasticsearch-storage
Elasticsearch storage adapter for node-ts-cache.
Installation
npm install @node-ts-cache/core @node-ts-cache/elasticsearch-storageUsage
import { Cache, ExpirationStrategy } from '@node-ts-cache/core';
import { ElasticsearchStorage } from '@node-ts-cache/elasticsearch-storage';
const elasticsearchCache = new ExpirationStrategy(
new ElasticsearchStorage({
indexName: 'my-cache-index',
clientOptions: {
node: 'http://localhost:9200'
}
})
);
class MyService {
@Cache(elasticsearchCache, { ttl: 60 })
async getUsers(): Promise<User[]> {
// expensive operation
}
}Configuration Options
interface ElasticsearchStorageOptions {
/** The index name to use for storing cache entries */
indexName: string;
/** Elasticsearch client options */
clientOptions?: ClientOptions;
/** Pre-configured Elasticsearch client instance (takes precedence over clientOptions) */
client?: Client;
}Using a pre-configured client
If you already have an Elasticsearch client instance configured (e.g., with authentication), you can pass it directly:
import { Client } from '@elastic/elasticsearch';
import { ElasticsearchStorage } from '@node-ts-cache/elasticsearch-storage';
const client = new Client({
node: 'https://my-elasticsearch-cluster.com',
auth: {
apiKey: 'your-api-key'
}
});
const storage = new ElasticsearchStorage({
indexName: 'my-cache',
client
});Running Tests Locally
Start Elasticsearch using Docker:
docker run -p 9200:9200 -e "discovery.type=single-node" -e "xpack.security.enabled=false" elasticsearch:8.12.0Then run the tests:
npm testLicense
MIT
