我正在尝试使用BodyBuilder从一个对象数组动态构建一个弹性查询。我可以在对象数组上使用for循环构建一个没有嵌套聚合的查询,但是当需要深度聚合时会遇到困难。< / p>
这是我的JSON的样子-
let queries = [
{
"type": "filter",
"action": "range",
"field": "transactionDate",
"input": {
"gte": "",
"lte": ""
},
"children": []
},
{
"type": "filter",
"action": "terms",
"field": "store.keyword",
"input": [],
"children": []
},
{
"type": "filter",
"action": "nested",
"path": "lineItems",
"field": "",
"children": [
{
"type": "query",
"action": "terms",
"field": "lineItems.stockNo.keyword",
"path":""
"input": [],
"children":[]
}
]
}
];
这也可能包含聚合。 我建立查询的方式-
queries.forEach((element) => {
if(element.children.length === 0)
ds[element.type](element.action, element.field, element.input);
else
//what should I do here
});
这不适用于嵌套查询。 在bodybuilder中的嵌套查询返回带有查询的函数。 像这样-
.query('nested', 'path', 'obj1', (q) => {
return q.query('match', 'obj1.color', 'blue')
})
我希望它根据子项返回多个查询。我该如何实现此目标,或者是否有其他方法来构建动态查询。此JSON来自前端。