我正在使用bodybuilder生成elasticsearch查询,但我不知道如何使用查询,过滤器和所有内容创建复杂查询。
假设我在数组中有字段
let queryArr =
[
{
type: 'query',
field: 'message',
input: 'this is a test'
},
{
type: 'filter',
field: 'user',
input: 'sample'
},
{
type: 'notfilter',
field: 'user',
input: 'demo'
},
{
type: 'query',
field: 'name',
input: 'test'
}
]
如何生成以下最终查询结构以从此数组传递给bodybuilder?
let finalQuery = bodybuilder()
.query('match', 'message', 'this is a test')
.filter('term', 'user', 'sample')
.notFilter('term', 'user', 'demo')
.query('match', 'name', 'test')
.build()
这里的健美和构建是健美运动员提供的功能。
我尝试使用模板字符串,但它不起作用。
我愿意接受任何其他客户端JS querybuilder的建议,它将数组作为输入并返回弹性搜索查询。
答案 0 :(得分:0)
我几天前遇到了同样的问题,但我找到了一种与健美运动员合作的方法,但你需要这个功能..术语/匹配等
const ds = bodybuilder()
queryArr.forEach((element) => {
ds[element.type](element.function, element.field, element.input);
});
const build = ds.build();
并且查询构建得很好。除非你需要嵌套的聚合/过滤器,这种方法不起作用