【发布时间】:2019-01-10 09:55:12
【问题描述】:
我正在尝试将我的查询转换为使用弹性 js 完成的查询,该弹性 js 是完整的库,现在完整的库自 2014 年以来已经有一段时间没有更新了。我想将使用 fullscale 编写的所有查询转换为本机弹性搜索 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);
}
任何帮助将不胜感激。
【问题讨论】:
标签: typescript elasticsearch elasticsearch-dsl