1.0.1 • Published 6 months ago
nestjs-solr v1.0.1
nestjs-solr
Description
Solr module for Nestjs.
Usage
Register SolrModule
:
import { SolrModule } from 'nest-solr';
@Module({
imports: [
SolrModule.register({
host: 'localhost',
port: '8983',
secure: false,
core: 'mycore',
}),
],
})
export class AppModule {}
Inject SolrService
:
import { SolrService } from 'nest-solr';
@Injectable()
export class SearchService {
constructor(private readonly solrService: SolrService) {}
}
Async options
@Module({
imports: [
SolrModule.registerAsync({
imports: [ConfigModule],
useFactory: async (configService: ConfigService) => ({
host: configService.get('SOLR_HOST'),
port: configService.get('SOLR_PORT'),
secure: configService.get('SOLR_SECURE'),
core: 'mycore',
}),
inject: [ConfigService],
}),
],
})
Examples
// Add a new document
const obj = await this.solrService.add({ id : 12, title_t : 'Hello', status: '1' });
console.log('Solr response:', obj);
// Search
const solrQuery = this.solrService
.query()
.q({ title_t: 'Hello' })
.matchFilter('status', '1') //the fq (Filter Query)
.fl(['title_t']) //the fl (field List)
.start(0) //the offset where the set of returned documents should begin
.rows(10) //the maximum number of documents returned
;
const ret: SearchResponse<any> = await this.solrService.search(solrQuery);
console.log('Solr response:', obj);
// Delete all documents
await this.solrService.deleteAll();
API Spec
The SolrService
wraps the Solr client from the lbdremy/solr-node-client library. The SolrModule.register()
takes options object as an argument to create the client, read more here.
Solr Homepage: https://solr.apache.org/