mongoosastic-ts
Version:
A mongoose plugin that indexes models into elastic search
96 lines (95 loc) • 3.17 kB
TypeScript
/// <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;
}