按字段的未知值筛选文档

mzmfm0qo  于 2021-06-10  发布在  ElasticSearch
关注(0)|答案(1)|浏览(383)

我正在尝试创建一个查询,以便根据字段中的一个(可以是任何人)值(在我的示例中是“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"
              }
            }
          }
        }
      }

如果有人能帮我改进这个想法,我会很感激的。

kyks70gy

kyks70gy1#

热释光;医生,你不能。
脚本查询上下文一次操作一个文档,因此您不能访问其他文档的字段值。你可以使用 scripted_metric 聚合允许遍历所有文档,但它只是一个聚合,而不是一个查询。
我建议先做个简单的测试 terms agg找出您正在使用的值,然后相应地构建查询。

相关问题