假设我有一堆这样的文档:
{
"foo" : [1, 2, 3]
}
{
"foo" : [3, 4, 5]
}
对于针对这些文档运行的查询,我正在寻找一种方法来返回foo
的所有值的数组(理想情况下是唯一的值,但重复的值也是可以的):
{
"foo" : [1, 2, 3, 3, 4, 5]
}
我已经研究了聚合API,但我不知道如何实现这一点,如果它在所有可能的。我当然可以用代码手动编译结果,但是我可以有成千上万的文档,以这种方式获得结果会更干净。
假设我有一堆这样的文档:
{
"foo" : [1, 2, 3]
}
{
"foo" : [3, 4, 5]
}
对于针对这些文档运行的查询,我正在寻找一种方法来返回foo
的所有值的数组(理想情况下是唯一的值,但重复的值也是可以的):
{
"foo" : [1, 2, 3, 3, 4, 5]
}
我已经研究了聚合API,但我不知道如何实现这一点,如果它在所有可能的。我当然可以用代码手动编译结果,但是我可以有成千上万的文档,以这种方式获得结果会更干净。
2条答案
按热度按时间7ivaypg91#
您可以使用Scripted Metric Aggregation和reduce_script。
设置一些测试数据:
现在试试这个聚合:
调用将返回以下内容:
也许有一个解决方案没有oun
.flatten()
,但我还没有那么多到groovy(尚未)找到这样的解决方案。我不能说这个聚合的性能有多好,你必须自己测试它。enxuqcxy2#
我用的方法