我有点怀疑你在刷屏

这个问题有点难?

Elasticsearch | 作者 umedier | 发布于2019年04月10日 | 阅读数:3816


 
已邀请:

medcl - 今晚打老虎。

赞同来自: laoyang360 kepmoving famoss hr tcpdump wssmao ggg zhangg7723 printf_uck Alone viewsite CanyiSama wkdx nofearinmyheat更多 »

获得答案就删除问题的描述,这个是可耻的,已禁言。

bellengao - 博客: https://www.jianshu.com/u/e0088e3e2127

赞同来自: umedier

取该酒店最低的房型价格是平均值的最低,还是实际值的最低?
我这里给出一个计算每个酒店所有房型给定日期,比如2019-04-13 到2019-04-15的平均价格的聚合dsl: 
另外注意需要把goods和goods.priceModels字段设置成nested类型,才可以是用nested aggregation
{
  "aggs": {
    "d": {
      "terms": {
        "field": "hotelId"
      },
      "aggs": {
        "x": {
          "nested": {
            "path": "goods"
          },
          "aggs": {
            "y": {
              "terms": {
                "field": "goods.goodsId"
              },
              "aggs": {
                "z": {
                  "nested": {
                    "path": "goods.priceModels"
                  },
                  "aggs": {
                    "a": {
                      "filter": {
                        "range": {
                          "goods.priceModels.date": {
                            "gte": "2019-04-13",
                            "lte": "2019-04-15",
                            "format": "yyyy-MM-dd"
                          }
                        }
                      },
                      "aggs": {
                        "b": {
                          "avg": {
                            "field": "goods.priceModels.salePrice"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}

laoyang360 - 《一本书讲透Elasticsearch》作者,Elastic认证工程师 [死磕Elasitcsearch]知识星球地址:http://t.cn/RmwM3N9;微信公众号:铭毅天下; 博客:https://elastic.blog.csdn.net

赞同来自: umedier

这里的关键是你的文档在nested里面,取的话满足条件数据都会显示出来。楼上的dsl也没法解决这个问题。建议:数据建模的时候处理区分下

elasticStack - 90后it大数据男

赞同来自: umedier

在映射mapping时指定为nested才能解决这个问题, 楼上说的没错

juneryang

赞同来自:

你这个麻烦的地方在于这其实是一个document,假设你简单搜索goods.priceModels.date字段 2019-04-13 的数据,也会返回所有的goods.priceModels.salePrice字段的值

要回复问题请先登录注册