elasticsearch 获取更多字段,而不是Elasticsearch聚合中的一个字段,elasticsearch,nosql,elasticsearch,Nosql" /> elasticsearch 获取更多字段,而不是Elasticsearch聚合中的一个字段,elasticsearch,nosql,elasticsearch,Nosql" />

elasticsearch 获取更多字段,而不是Elasticsearch聚合中的一个字段

elasticsearch 获取更多字段,而不是Elasticsearch聚合中的一个字段,elasticsearch,nosql,elasticsearch,Nosql,我是Elasticsearch新手,我的程序有问题。 为了像SQL中的“GROUPBY”语句那样对结果进行分组。我使用了聚合。 但我意识到这里有一个问题我需要解决。我使用以下语句对结果进行分组: { "aggs": { "agg1": { "terms": { "field": "field1" }, "aggs": { "agg2": { "terms": { "fiel

我是Elasticsearch新手,我的程序有问题。
为了像SQL中的“GROUPBY”语句那样对结果进行分组。我使用了聚合。
但我意识到这里有一个问题我需要解决。我使用以下语句对结果进行分组:

{
  "aggs": {
    "agg1": {
      "terms": {
        "field": "field1"
      },
      "aggs": {
        "agg2": {
          "terms": {
            "field": "field2"
          },
          "aggs": {
            "agg3": {
              "terms": {
                "field": "field3"
              }
            }
          }          
        }
      }
    }
  }
}
我的问题是:field2和field3的值取决于field1的值,所以如果可以得到field1的值,也可以得到field2和field3的值。因此,像上面那样进行聚合将花费大量时间来完成我的程序(我已经测试过了,并且意识到它比仅对字段1进行分组要慢6倍)。
所以我的问题是:是否可以只对field1进行分组(只使用一个“aggs”),同时也获取field2和field3的值?
如果没有,那么还有其他可能的方法来完成我的工作吗?

提前感谢:)

如果我理解正确,您正在寻找聚合,您可以包含任意数量的字段,请尝试此

{
  "size": 0,
  "aggs": {
    "agg1": {
      "terms": {
        "field": "field1"
      },
      "aggs": {
        "include_fields": {
          "top_hits": {
            "size": 100,
            "_source": {
              "include": [
                "field2",
                "field3"
              ]
            }
          }
        }
      }
    }
  }
}

非常感谢您,使“大小”等于1是我所需要的。很高兴我可以帮助您,您可以根据您想要的大小,默认值为10