我创建了一个名为test
的类型,它由prices
嵌套字段组成。
每个文档可以包含多个价格,每个价格由price
和date
组成:
...
"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
,我不知道它会计算得分。
有什么想法吗?