提问
我是chaining不同的elasticsearch查询在一个观察者。我短我想这样做:
- 查找container_id
- 对具有任何这些container_id的所有条目运行查询
第一个查询给了我一个数组。所以我想把这个数组作为输入传递给terms query。问题是ctx.payload...
变量似乎只在字符串内扩展。
"query": {
"terms" : {
"container_id" : ctx.payload.first_query._value,
}
}
字符串
会给我给予错误,例如:
无法识别的令牌“ctx”
有没有一种方法可以插入一个数组而不扩展为一个字符串?如果我使用“ctx.payload.first_query._value”,他将查询字符串"[id1, id2]"
.
当前解决方案
我目前已经实现了一个通过正则表达式传递的解决方案,但这似乎有点笨拙:
"input": {
"chain": {
"inputs" : [ {
"container_ids" : {
...
}
}, {
"container_id_regex": {
"transform" : {
"script": """
def container_id_rexexp = "";
def regexp_separator = "";
for(def hit : ctx.payload.container_ids.hits.hits){
container_id_rexexp += regexp_separator + hit._source.container_id;
regexp_separator = "|";
}
return container_id_rexexp;
"""
}
}
}, {
"container_details": {
"search": {
"request": {
...
"body": {
"query": {
"regexp": {
"container_id": {
"value": "{{ '{{ctx.payload.container_id_regex._value}}' }}"
}
}
}
}
}
}
}
} ]
}
}
型
1条答案
按热度按时间wj8zmpe11#
在第二个链接输入中,您可以使用“template”选项和“#toJson”特殊的mustache标记。使用“#toJson”标记,您可以按原样注入JSON结构,如数组。
下面是一个例子:
字符串