UNPKG

mongoosastic-ts

Version:

A mongoose plugin that indexes models into elastic search

96 lines (95 loc) 3.17 kB
/// <reference types="node" /> import { Client, IndexDocumentParams } from 'elasticsearch'; import { EventEmitter } from 'events'; import { Document, LeanDocument, Model, Schema, Types } from 'mongoose'; export type MongoosasticNestedOpts = Record<string, string | boolean | number | Record<string, string | boolean | number>>; export interface IMongoosasticSearchParams { sort?: Record<string, any>; bool?: Record<string, any>; match_phrase?: Record<string, any>; query_string?: Record<string, any>; match_all?: Record<string, any>; match?: Record<string, any>; range?: Record<string, any>; term?: Record<string, any>; } export interface IMongoosasticSearchOpts { suggest?: any; sort?: any; min_score?: number; aggs?: any; highlight?: any; index?: string; routing?: string; hydrate?: boolean; hydrateWithESResults?: { source?: boolean; }; hydrateOptions?: { lean?: boolean; sort?: string; select?: string; }; from?: number; size?: number; } export interface MongoosasticModel<T> extends Model<T> { esSearch: (params: IMongoosasticSearchParams, opt?: IMongoosasticSearchOpts) => Promise<any>; search: (params: IMongoosasticSearchParams, opt?: IMongoosasticSearchOpts) => Promise<any>; createMapping: (settings?: any, mappings?: any) => Promise<any>; synchronize: (params?: any, opt?: any) => EventEmitter; esTruncate: (opt?: MongoosasticNestedOpts) => Promise<any>; esCount: (opt?: MongoosasticNestedOpts) => Promise<any>; index: (opt?: MongoosasticNestedOpts) => Promise<any>; flush: (opt?: MongoosasticNestedOpts) => Promise<any>; refresh: (opt?: MongoosasticNestedOpts) => Promise<any>; esClient: Client; } export interface MongoosasticDocument { index: (opt?: any) => Promise<any>; unIndex: (opt?: any) => Promise<any>; } export interface MongoosasticBulkIndexOpts extends Partial<IndexDocumentParams<any>> { model: any; _id?: string; } export interface MongoosasticSchema<T> extends Schema<T> { statics: MongoosasticModel<any> & Schema<T>['statics']; } export interface MongoosasticPluginOpts<T = any> { log?: string; auth?: string; protocol?: string; port?: number; host?: string; hosts?: string[]; esClient?: Client; esVersion?: string; keepAlive?: boolean; saveOnSynchronize?: boolean; indexAutomatically?: boolean; forceIndexRefresh?: boolean; customSerialize?: (doc?: any, mapping?: any) => any; customProperties?: any; routing?: (document: LeanDocument<T>) => any; transform: (json: LeanDocument<T> & Record<string | number, any>, document: (Document<Types.ObjectId, any, T> & Omit<LeanDocument<T>, '_id'>) | { [p: string]: any; [p: number]: any; [p: symbol]: any; }) => any; filter: (doc: any) => any; bulk: { batch: number; size: number; delay: number; }; hydrateOptions: { lean?: boolean; sort?: string; select?: string; }; hydrate?: boolean; populate: string[]; index?: string; type: string; }