[英]Elasticsearch - Sort query based on collapse results
我正在嘗試根據 SKU 對項目進行分組/堆疊。
目前,如果從高到低排序,以 10 美元或 1 美元出售的商品將首先顯示 1 美元的商品(因為它也是以 10 美元出售的,所以它當然會放在數組的前面)。 排序應該只考慮其排序操作的lowest_price
,僅針對該特定 SKU。
有沒有辦法讓我可以根據每個 SKU 的最低價格進行排序,並且每個 SKU 只返回 1 件單品?
如果崩潰的結果可以用作排序的變量,這可以解決,但我無法找出它是如何工作的。
我的項目 object 看起來像這樣:
{
itemId: String,
sku: String,
price: Number
}
這是我的查詢:
let itemsPerPage = 25;
let searchQuery = {
from: itemsPerPage * page,
size: itemsPerPage,
_source: ['itemId'],
sort: [{'sale.price': 'desc'}],
query: {
bool: {
must: [],
must_not: []
}
},
collapse: {
field: 'sku',
inner_hits: [{
name: 'lowest_price',
size: 1,
_source: ['itemId'],
sort: [{
'price': 'asc'
}]
}
],
}
};
您需要在折疊下方添加排序。 例子:
GET /test/_search
{
"query": {
"function_score": {
"query": {
"constant_score": {
"filter": {
"bool": {
"must": [
{
"match" : {
"job_status" : "SUCCESS"
}
}
]
}
}
}
}
}
},
"collapse": {
"field": "run_id.keyword"
},
"sort": [
{
"@timestamp": {
"order": "desc"
}
}
]
}
這可能會解決您的問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.