问题描述
假如有2个文档,其中每个文档中都有一个内容为json的字段(content),例如:
文档1、content:[{"k": "1", "v": "2016"}, {"k": "2", "v": "2017"}, {"k": "3", "v": "2018"}, {"k": "4", "v": "2016"}, {"k": "5", "v": "2018"}]
文档2、content:[{"k": "1", "v": "2016"}, {"k": "2", "v": "2018"}, {"k": "3", "v": "2019"}]
我的目的:
1、按v值对所有文档进行分组统计,统计v值的种类,类似sql: select v,count(*) from .... group by v;
2、对指定的v值,对相关的k进行统计,类似sql: select k,count(*) from ...where v=2018... group by k;
问题出现的环境背景及自己尝试过哪些方法
目前在postgres做个尝试,数据量在百万级以上后效果不好
相关代码
// 请把代码文本粘贴到下方(请勿用图片代替代码)
在postgres中代码:
1、v值统计
select json_array_elements(content::json)->>'v',count(*) from A GROUP BY json_array_elements(content::json)->>'v'
2、指定v值,对相关的k进行统计
select k,count(*) from (
SELECT json_array_elements(content::json)->>'k' as k ,json_array_elements(content::json)->>'v' as v FROM A where content @> '[{"v":"2018"}]'
) B GROUP BY k
你期待的结果是什么?实际看到的错误信息又是什么?
Elasticsearch中如何对这样的数据进行统计,方法是什么??? 求助.......