2016-05-29 57 views
0

这是我想要做的。我有一个在Elasticsearch中有几个文件的索引。在每个文档中,我有两个字段:deviceField(设备的名称)和pressionField(定期按压的值)。我想在索引中查询每个设备的平均压缩率。你知道一种方法来做一个单一的查询吗?事实上,我不想为每个deviceName的查询做一个'for'循环。由于我拥有数百万个设备,这将花费太多时间。Lucen/Elasticsearch:查询多个值的域

谢谢你的关注和你的帮助。

S

回答

1

您必须使用度量标准聚合。如果要列出所有在同一查询使用subaggregation

{ 
    "aggs" : { 
     "devices" : { 
      "terms" : { "field" : "deviceField" }, 
      "aggs" : { 
       "avg_pression" : { "avg" : { "field" : "pressionField" } } 
      } 
     } 
    } 
} 

这里是文档的链接:

https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-metrics-avg-aggregation.html

+0

嗨巴勃罗,感谢您的回复。但是,我通过使用您的代码得到了一个错误。 “type”:“search_parse_exception”, “reason”:“无法在[aggs]”中找到聚合器类型[avg_pression]“。你知道如何解决这个问题。 –

+0

也许子聚集必须在另一个子集内。我编辑了代码。现在试试。如果问题仍然存在,请粘贴查询以帮助您。 –

+0

现在它的作品再次感谢! –