ElasticSearch中的分数聚合结果

Yam*_*shi 6 aggregate function aggregation elasticsearch

我创建了一个名为test包含prices嵌套字段的类型.

每个文件可以包含多个价格,每个价格包括pricedate:

...
"prices":[{  
      "date" : "2017-02-08T16:04:20.424Z",
      "price" : 120
   },
   {  
      "date" : "2017-02-08T17:35:01.424Z",
      "price" : 70
   }]
...
Run Code Online (Sandbox Code Playgroud)

我正在尝试创建一个搜索查询,首先将每个文档的价格汇总到最小值price,然后使用线性衰减函数对聚合返回的所有最小值进行评分

我目前在所有文档上都有一个聚合查询:

{
    "query": {
        "match_all": {}
    },
    "aggs" : {
        "prices" : {
            "nested" : {
                "path" : "prices"
            },
            "aggs" : {
                "min_price" : { "min" : { "field" : "prices.price" } }
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

返回最低价格test.

还有一个线性衰减函数,prices可以对未聚合的所有文档的嵌套进行评分:

{
  "query": {
    "nested": {
        "path": "prices",
        "query": {
            "function_score": {
              "functions": [
                {
                  "linear": {
                    "prices.price": { 
                      "origin": "50", 
                      "offset": "50",
                      "scale":  "20"
                    }
                  }
                }
              ]
            }
        }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

返回每个文档的分数.问题是,我不知道根据price嵌套prices字段中的内容计算分数.

有任何想法吗?