0

我正在尝试创建一个查询,以按字段(在我的情况下为“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"
              }
            }
          }
        }
      }

如果有任何人可以帮助我改进建议我一个新的想法,我将不胜感激。

4

1 回答 1

0

TL; DR 你不能。

脚本查询上下文一次对一个文档进行操作,因此您无法访问其他文档的字段值。您可以使用scripted_metric允许遍历所有文档的聚合,但它只是——聚合——而不是查询。

我建议首先运行一个简单的termsagg 来确定您正在使用的值,然后相应地构建您的查询。

于 2020-11-26T14:02:55.713 回答