0.0.4 • Published 1 year ago

mongoosearch v0.0.4

Weekly downloads
-
License
MIT
Repository
github
Last release
1 year ago

Mongoosearch Beta

Integrate Mongoose with Elasticsearch, the easy way.

Installation

This module is distributed via npm, commands:

npm install mongoosearch

or:

yarn add mongoosearch

Initializing

import mongoose, { Schema } from 'mongoose'
import { Mongoosearch, MongoosearchModel } from 'mongoosearch'
import { ElasticsearchClient } from '../elasticsearch-client'
import { CollectionNames } from '../collection-names'

export interface Cat extends Document {
  sample: string
}

export interface CatModel extends MongoosearchModel<Cat> {}

export const CatSchema = new Schema<Cat, CatModel>({
  sample: { type: String, elasticsearch: true },
}).plugin(Mongoosearch, { client: ElasticsearchClient })

export const CatCollection = mongoose.model<Cat, CatModel>(
  CollectionNames.Cat,
  CatSchema,
)

Then:

await CatCollection.esCreateMapping()

This will parse the schema fields containing Elasticsearch enabled fields and persist the corresponding mapping.

Now new documents will be automatically persisted on Elasticsearch.

If you specify the manual option like so:

schema.plugin(Mongoosearch, { client: ElasticsearchClient, manual: true })

Then you will need to call esSync manually:

await CatCollection.esSync()

Searching

After you got your collection indexed you can search it:

const results = await CatCollection.esSearch({
  query_string: { query: 'garfield' },
})