2013-03-15 263 views
4

我想对我的一个数组做一个统计方面的工作。我希望像如何在elasticsearch中获得数组的数量/大小

"script" : "doc['myField'].doubleValue 

"script" : "doc['myField'].count 

会工作。我还没有找到任何数组中的数组方法,我甚至不知道是否访问脚本中的数组字段实际上给了我数组。

+0

看看这里:http://stackoverflow.com/questions/12733351/how-do-i-sort-the-search-results-according-to-the-number-of-items-in -elasticsear/12734613#12734613 – javanna 2013-03-15 17:42:14

回答

5

我可能拥有它。看来我需要计算数组内的一个字段而不是数组本身。这可能只是因为我所有的都是对象数组。

"script" : "doc['arrayField.objectField'].values.length" 
+0

哈,我这样做,它完全杀死了我的集群。也许有一种方法可以实现更好的性能。 – Alden 2013-03-15 17:59:35

+0

它会杀死你的集群,因为它将这个字段的所有值加载到内存中,在版本0.90之前,elasticsearch使用相当低效的结构来保存内存中多值字段的值。因此,您在这里有几个选项:升级到0.90.0.Beta1,如果存储该字段,则使用_fields而不是doc;或者将数组长度作为另一个字段索引。我认为最后的解决方案是最好的。 – imotov 2013-03-16 00:15:11