1.4.1 • Published 4 months ago

nestjs-opensearch v1.4.1

Weekly downloads
-
License
MIT
Repository
github
Last release
4 months ago

Installation

For NPM:

$ npm i --save nestjs-opensearch @opensearch-project/opensearch

For Yarn:

$ yarn add nestjs-opensearch @opensearch-project/opensearch

Module configuration

Module for single connection:

import { OpensearchModule } from 'nestjs-opensearch';

@Module({
  imports: [
    OpensearchModule.forRoot({
      node: 'https://*****.es.amazonaws.com',
    }),
  ],
  providers: (...),
})
export class SearchModule { }

Module for multiple connections:

import { OpensearchModule } from 'nestjs-opensearch';

@Module({
  imports: [
    OpensearchModule.forRoot({
      clientName: 'foo',
      node: 'https://*****.es.amazonaws.com',
    }),
    OpensearchModule.forRoot({
      clientName: 'bar',
      node: 'https://*****.es.amazonaws.com',
    }),
  ],
  providers: (...),
})
export class SearchModule { }

Module for async configuration using useFactory:

import { OpensearchModule } from 'nestjs-opensearch';

@Module({
  imports: [
    OpensearchModule.forRootAsync({
      clientName: 'baz',
      // See also: https://docs.nestjs.com/techniques/configuration
      imports: [ ConfigModule ],
      inject: [ ConfigService ],
      useFactory: (configService) => ({
        node: configService.get<string>('opensearch.node'),
      }),
    }),
  ],
  providers: (...),
})
export class SearchModule { }

Module for async configuration using useClass:

import type { ClientOptions } from '@opensearch-project/opensearch';
import { OpensearchModule, OpensearchClientOptionsFactory } from 'nestjs-opensearch';

@Injectable()
export class OpensearchConfigService implements OpensearchClientOptionsFactory {
  public async createOpensearchClientOptions(): Promise<ClientOptions> {
    const configs = await fetch(...);
    return {
      node: configs.node,
    };
  }
}

@Module({
  imports: [
    OpensearchModule.forRootAsync({
      clientName: 'qux',
      useClass: OpensearchConfigService,
    }),
  ],
  providers: (...),
})
export class SearchModule { }

Client usage

import { InjectOpensearchClient, OpensearchClient } from 'nestjs-opensearch';

@Injectable()
export class SearchService {
  public constructor(
    // Inject the default client
    private readonly searchClient: OpensearchClient,

    // Also inject the default client
    @InjectOpensearchClient()
    private readonly alsoSearchClient: OpensearchClient,

    // Inject the 'foo' named client
    @InjectOpensearchClient('foo')
    private readonly fooSearchClient: OpensearchClient,
  ) { }
}
0.4.1

4 months ago

1.4.1

4 months ago

0.4.0

9 months ago

0.3.2

2 years ago

0.3.1

2 years ago

0.3.0

3 years ago

0.1.0

3 years ago

0.2.0

3 years ago

0.0.1

4 years ago