Elasticsearch最低价格为一个月

时间:2017-08-23 11:29:12

标签: elasticsearch

我希望从我选择的产品索引日期开始接收下一个和前15天的最低价格。

如何在ES中获得此价格?我应该写什么样的查询?

我的映射:

  {
     "product-data": {
        "mappings": {
           "mine-apple": {
              "properties": {               
                 "date": {
                    "type": "date"
                 },
                 "productName": {
                    "type": "text",
                    "fields": {
                       "keyword": {
                          "type": "keyword",
                          "ignore_above": 256
                       }
                    }
                 },
                 "productDescription": {
                    "type": "text",
                    "fields": {
                       "keyword": {
                          "type": "keyword",
                          "ignore_above": 256
                       }
                    }
                 },               
                 "id": {
                    "type": "text",
                    "fields": {
                       "keyword": {
                          "type": "keyword",
                          "ignore_above": 256
                       }
                    }
                 },                                             
                 "price": {
                    "type": "long"
                 },               
                 "query": {
                    "properties": {
                       "match_all": {
                          "type": "object"
                       }
                    }
                 }               
              }
           }
        }
     }
  }

提前致谢。

1 个答案:

答案 0 :(得分:0)

  

我找到的解决方案:我在我的查询中添加了日期直方图。这样,我的查询用日期直方图分组。最迟我得到最低价格的最低价格。

  {
       "query": {
          "bool": {
             "must": [
                {
                   "range": {
                      "date": {
                         "gte": "2017-05-11",
                         "lte": "2017-05-14"
                      }
                   }
                }
             ]
          }
       },
       "size": 0,
       "aggs": {
          "sales_per_month": {
             "date_histogram": {
                "format": "YYYY-MM-dd",            
                "field": "date",
                "interval": "day"
             },
             "aggs": {
                "sales": {
                   "min": {
                      "field": "price"
                   }
                }
             }
          }
       }
    }