如何为每个文档汇总嵌套属性

时间:2019-04-14 09:04:18

标签: elasticsearch querydsl

我使用弹性搜索进行用户搜索。我有一个这样的文件。

{
   "uid":1,
   "fullname": "xxxx",
   "order_info": [
      {"order_id":1, "create_time":"2018-01-01"},
      {"order_id":2, "create_time":"2019-01-01"},
      {"order_id":3, "create_time":"2019-02-01"}
    ]
}

我可以得到像这样的sql文件吗

select * from member_info where id in (
  select member_id from order_info where create_time > '2019-01-01' group by 
  uid having count(*) > 3
); 

1 个答案:

答案 0 :(得分:0)

您将需要使用后过滤聚合。

  1. 使用查询通过create_time过滤order_info
  2. 在上面的查询中使用值汇总来计算order_info中的订单数量
  3. 当计数大于
  4. 时,使用post_filter查询获取结果

OR

仅使用Elasticsearch SQL REST API this

参考文献: