UNPKG

yandex-tank-ammo-generator

Version:

Cartridge generation for Yandex tank

172 lines (171 loc) 4.46 kB
/** * Типы поиска * @enum */ import { BoolBuilder } from './BoolBuilder'; import { ScriptBuilder } from './ScriptBuilder'; export declare enum IFindTypes { MUST = "must", MUST_NOT = "must_not", SHOULD = "should" } /** * Критерии фильтрации * @enum */ export declare enum IFilterTypes { RANGE = "range", EXISTS = "exists", BY_ARRAY_TERMS = "terms", BY_TERMIN = "term", MATCH_PHRASE = "match_phrase", MATCH = "match" } /** * Критерии для поиска диапазонов * @interface */ export interface IRangeFilter { gt?: range; gte?: range; lt?: range; lte?: range; } /** * Тип для диапазонов * @type */ export declare type range = number | Date; /** * Варианты сортировки * @enum */ export declare enum SortTypes { ASC = "asc", DESC = "desc" } /** * Обьект сортировки * @interface */ export interface ISortPArams { [field: string]: { order: SortTypes; }; } export interface IRawQuery { size?: number; query: { bool: { must: any[]; must_not: any[]; should: any[]; }; }; } /** * @Class QueryBuilder * @Classdesc Билдер запросов к elasticSearch */ export declare class QueryBuilder { /** * Хранилище запроса * @private */ private _query; private _agg; private _script; /** * Сортировка * @param args * @return {this} */ sort(...args: ISortPArams[]): this; /** * Сортировка * @param args[] * @return {this} */ sortOfArray(args: ISortPArams[]): this; /** * Указать критерий поиска по индексу (термин, например articul = 10001) * @param type * @param field * @param value * @return {this} */ addTerm(type: IFindTypes, field: string, value: number | Date | string | boolean): this; addMatch(type: IFindTypes, field: string, value: number | Date | string | boolean): this; /** * Указать набор критериев через Bool * @param type * @param bool * @return {this} */ addBool(type: IFindTypes, bool: BoolBuilder): this; /** * Фраза для поиска * @param type * @param field * @param value * @return {this} */ addTextPhrase(type: IFindTypes, field: string, value: string): this; /** * Указать массив критериев поиска (аналогия выше) по индексу * @param type * @param field * @param values * @return {this} */ addTermsArray(type: IFindTypes, field: string, values: string[] | number[]): this; /** * Указать критерий поиска на существование колонки * @param type * @param fieldName * @return {this} */ addExistsTerm(type: IFindTypes, fieldName: string): this; /** * Указать диапазон поиска по индексу * @param type * @param field * @param value * @return {this} */ addRange(type: IFindTypes, field: string, value: IRangeFilter): this; addAggsTerms(key: string, field: string, missing?: any): this; addAggsMax(key: string, field: string): this; addAggsMaxScript(key: string, b: ScriptBuilder | string): this; addAggsMinScript(key: string, b: ScriptBuilder | string): this; addAggsMin(key: string, field: string): this; addFieldScript(b: ScriptBuilder | string): this; /** * Свой запрос * @param type * @param filterType * @param filter * @return {this} */ addCustomFilter(type: IFindTypes, filterType: IFilterTypes, filter: any): this; /** * Вернуть запрос * @return {object} */ buildQuery(): object; /** * Запрос для получения колличества записей * @return {Pick<any, Exclude<keyof any, "sort">>} */ buildCountQuery(): object; /** * Получить сырой запрос * @return {string} * @private */ _getPrettyQuery(): object; /** * Установить максимальный размер выборки */ maxSampleSize(): this; }