我有一组包含src
,txt
和flt
字段的文档。我想通过以下方式按txt
字段进行查询:
src
; _score * doc.flt
值对每个广告订单进行排序。到目前为止,我已经实现了1和2,但不是3.即使3可能效率不高,我仍然希望有这样的选择。我的查询如下:
{
"query" : {
'match' : {
'text' : {
'query' : <some text>,
'fuzziness' : 'AUTO',
'operator' : 'and'
}
}
},
"aggs": {
"by_src": {
"terms": {
"field": "src",
"size" : 10,
"order" : {"top_score" : "desc"}
},
"aggs": {
"top_hits" : {
"top_hits" : {
"sort": { "_score": { "order": "desc" } },
"size" : 1
}
},
"top_score": {
"max" : {
"script" : "_score",
}
}
}
}
}
}
答案 0 :(得分:1)
我认为它失败了,因为您不需要使用_source
字段将排序应用于每个存储桶,只需按字段名称应用排序:
{
"query" : {
'match' : {
'text' : {
'query' : <some text>,
'fuzziness' : 'AUTO',
'operator' : 'and'
}
}
},
"aggs": {
"by_src": {
"terms": {
"field": "src",
"size" : 10,
"order" : {"top_score" : "desc"}
},
"aggs": {
"top_hits" : {
"top_hits" : {
"sort":[{
"flt": {"order": "desc"}
}],
"size" : 1
}
},
"top_score": {
"max" : {
"script" : "_score",
}
}
}
}
}
}
我假设您的文档中有一个名为
flt
的字段,您想要用它来排序。当然,如果符合您的要求,您也可以将排序更改为asc
。