Я пытаюсь преобразовать свой запрос, который был выполнен с использованием эластичного js, который является полноразмерной библиотекой, поскольку полноразмерная библиотека не обновлялась некоторое время с 2014 года. Я хотел преобразовать все свои запросы, написанные с использованием полноразмерного, в собственный эластичный поиск DSL. У меня небольшая проблема во время работы.
Вот как это выглядит ниже
function getFilterNative(field: string, type: string, values: string[]): any {
if (type === "equals") {
return ejs.TermFilter(field, values[0].toLowerCase());
}
var arrFilter: Array<any> = [];
for (var i in values) {
arrFilter.push(ejs.TermFilter(field, values[i].toLowerCase()));
}
return ejs.OrFilter(arrFilter);
}
Я пытаюсь добиться чего-то подобного
function getFilterNative(field: string, type: string, values: string[]): any {
if (type === "equals") {
//return ejs.TermFilter(field, values[0].toLowerCase());
var termFilter ={
"term":{}
//error in here when compiling the ts file
//error TS2403: Subsequent variable declarations must have the same type. Variable 'termFilter' must be of type '{ "term": {}; }', but here has type '{ terms: { field: string; }; }'.
};
termFilter["term"][field] = values[0].toLowerCase();
}
var orFilter = {filter:
{
or: {
filters: []
}
}};
var arrFilter: Array<any> = [];
for (var i in values) {
var termFilter = {
terms: {
field: values[i].toLowerCase()
}
};
arrFilter.push(termFilter)
//arrFilter.push(ejs.TermFilter(field, values[i].toLowerCase()));
}
orFilter.filter.or.filters = arrFilter;
return orFilter;
//return ejs.OrFilter(arrFilter);
}
Любая помощь будет оценена Спасибо.