当前位置:   article > 正文

ES父子文档聚合查询_es父子聚合

es父子聚合

1、按照父文档的字段去聚合

  1. GET shop_info/_search
  2. {
  3. "size": 0,
  4. "aggs": {
  5. "top-tags": {-------自定义
  6. "terms": {
  7. "field": "p_name.keyword", -----父文档的字段p_name keyword是精确索引需要的
  8. "size": 10
  9. },
  10. "aggs": {
  11. "to_answers": { ------自定义字段
  12. "children": {
  13. "type": "cal_detail"
  14. },
  15. "aggs": {
  16. "cal_sum": { ----自定义字段
  17. "sum": {
  18. "field": "cal_number" ------子文档的字段
  19. }
  20. }
  21. }
  22. }
  23. }
  24. }
  25. }
  26. }

1、按照父文档的字段去聚合后的结果过滤

  1. GET shop_info/_search
  2. {
  3. "size": 0,
  4. "aggs": {
  5. "top-tags": {
  6. "terms": {
  7. "field": "p_name.keyword",
  8. "size": 10
  9. },
  10. "aggs": {
  11. "to_answers": {
  12. "children": {
  13. "type": "cal_detail"
  14. },
  15. "aggs": {
  16. "cal_sum": {
  17. "sum": {
  18. "field": "cal_number"
  19. }
  20. }
  21. }
  22. },
  23. "sum_bucket_filter": {
  24. "bucket_selector": {
  25. "buckets_path": {
  26. "totalSales": "to_answers.cal_sum"--------注意该路径
  27. },
  28. "script": "params.totalSales>10000" ----注意params
  29. }
  30. }
  31. }
  32. }
  33. }
  34. }

查询满足父文档且满足子文档的文档

  1. GET shop_info/_search
  2. {
  3. "query": {
  4. "bool": {
  5. "must": [
  6. {
  7. "has_child": {
  8. "type": "cal_detail", ----子文档
  9. "query": {
  10. "bool": {
  11. "must": [
  12. {
  13. "term": {
  14. "name": {
  15. "value": "测算结果2"
  16. }
  17. }
  18. }
  19. ]
  20. }
  21. }
  22. }
  23. },
  24. {
  25. "term": {
  26. "p_name.keyword": { -------父文档的条件
  27. "value": "体验店1"
  28. }
  29. }
  30. }
  31. ]
  32. }
  33. }
  34. }

父子文档,按照父文档字段p_name对子文档进行sum聚合,然后对聚合后的结果进行分页+排序

  1. GET shop_info/_search
  2. {
  3. "size": 0,
  4. "aggs": {
  5. "top-tags": {
  6. "terms": {
  7. "field": "p_name.keyword",
  8. "size": 10
  9. },
  10. "aggs": {
  11. "my_page": {
  12. "bucket_sort": {
  13. "from": 0,
  14. "size": 1,
  15. "sort": {
  16. "to_answers.cal_sum": {
  17. "order": "desc"
  18. }
  19. }
  20. }
  21. },
  22. "to_answers": {
  23. "children": {
  24. "type": "cal_detail"
  25. },
  26. "aggs": {
  27. "cal_sum": {
  28. "sum": {
  29. "field": "cal_number"
  30. }
  31. }
  32. }
  33. }
  34. }
  35. }
  36. }
  37. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/456704
推荐阅读
相关标签
  

闽ICP备14008679号