yandex-tank-ammo-generator
Version:
Cartridge generation for Yandex tank
172 lines (171 loc) • 4.46 kB
TypeScript
/**
* Типы поиска
* @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;
}