我正在尝试创建一个查询,以便根据字段中的一个(可以是任何人)值(在我的示例中是“host.name”)来过滤我的文档。关键是我以前不知道这个字段的唯一值。我需要找到这些并选择一个用于查询。
我用一个无痛的脚本尝试了下面的查询,但是没有达到目标。
{
"sort" : [{"@timestamp": "desc"}, {"host.name": "asc"}],
"query": {
"bool": {
"filter": {
"script": {
"script": {
"source": """
String k = doc['host.name'][0];
return doc['host.name'].value == k;
""",
"lang": "painless"
}
}
}
}
}
如果有人能帮我改进这个想法,我会很感激的。
1条答案
按热度按时间kyks70gy1#
热释光;医生,你不能。
脚本查询上下文一次操作一个文档,因此您不能访问其他文档的字段值。你可以使用
scripted_metric
聚合允许遍历所有文档,但它只是一个聚合,而不是一个查询。我建议先做个简单的测试
terms
agg找出您正在使用的值,然后相应地构建查询。