ElasticSearch

时间:2017-03-07 00:48:47

标签: function elasticsearch aggregate aggregation

我创建了一个名为test的类型,它由prices嵌套字段组成。

每个文档可以包含多个价格,每个价格由pricedate组成:

...
"prices":[{  
      "date" : "2017-02-08T16:04:20.424Z",
      "price" : 120
   },
   {  
      "date" : "2017-02-08T17:35:01.424Z",
      "price" : 70
   }]
...

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

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

{
    "query": {
        "match_all": {}
    },
    "aggs" : {
        "prices" : {
            "nested" : {
                "path" : "prices"
            },
            "aggs" : {
                "min_price" : { "min" : { "field" : "prices.price" } }
            }
        }
    }
}

返回test中的最低价格。

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

{
  "query": {
    "nested": {
        "path": "prices",
        "query": {
            "function_score": {
              "functions": [
                {
                  "linear": {
                    "prices.price": { 
                      "origin": "50", 
                      "offset": "50",
                      "scale":  "20"
                    }
                  }
                }
              ]
            }
        }
    }
  }
}

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

有什么想法吗?

0 个答案:

没有答案