这与多级排序无关。
我需要首先根据距离选择结果,将结果限制为50,然后再按价格将这50结果排序。
select *
from
(
select top 50 * from mytable order by distance asc)
)
order by price asc
本质上,第二种排序放弃了内部排序的顺序-但是内部排序用于磨练前50个结果。
对于此类问题,我看到的其他答案是第二级排序,这不是我想要的。
顺便说一句:我看过聚合-前N个结果,但不确定是否可以对聚合结果排序应用排序。也看过了rescore
,但我不知道将“分类”放在哪里
热门匹配汇总可让您price
根据主查询的排序方式(在上distance
)对单独的字段进行排序。请参阅此处的文档,了解如何在热门匹配agg中指定排序。
看起来有点像这样(假定distance
是双重类型;如果是地理位置类型,请使用Volodymyr
Bilyachat提供的文档。)
{
"sort":[
{
"distance":"asc"
}
],
"query":{
"match_all":{}
},
"size":50,
"aggs":{
"top_price_hits":{
"top_hits":{
"sort":[
{
"price":{
"order":"asc"
}
}
],
"size":50
}
}
}
}
但是,如果主要查询只需要50个结果,为什么不只在应用程序客户端排序呢?这将是一种更好的方法,因为将热门匹配用作次要排序是对其目的的轻微滥用。
应用程序内方法将更强大。
问题内容: 我想根据特定字段对结果进行排序,然后应用限制过滤器。 一个简单的常见示例是一个SQL查询,例如返回的排序结果限制为100。 我在Elasticsearch中尝试了相同的方法。但是,这没有发生。它首先应用限制,然后进行排序,这给了我不希望的结果。谁能指出我做错了什么?这是我当前正在使用的查询。 问题答案: 限制过滤器首先在每个分片上工作,然后在一个节点上合并结果。如果您有多个分片,那么可
问题内容: 假设我将这样的文档存储在ElasticSearch中: 假设我使用location = CA进行搜索,如何根据“标签”中项目的数量对结果进行排序? 我想在首页中列出标签数量最多的人。 问题答案: 您可以为包含标签数量的其他字段建立索引,然后在其上轻松地对结果进行排序。否则,如果您愿意在查询时付出一点性能成本,那么有个不错的解决方案不需要重新索引数据:您可以根据如下脚本进行排序: 从基于
我已经在按\u score desc排序的查询部分中获得了所需的查询结果。现在我需要提取每个文档的3个字段。我想实现如下目标: 我刚刚试过: 1)使用折叠删除重复的值 但问题是它只会保留filed1的不同值,而忽略field 2和field 3的值。例如,我们有2条记录,如下所示: 使用此方法,我们只能获得一条记录,因为它们具有相同的field1值。我想要这三个字段的不同组合值。我们可以使用int
我需要对以搜索词开头的搜索结果进行优先级排序。我用了“匹配短语前缀”。我用了“匹配短语前缀”。但它不起作用。 细节: > 质疑 结果
问题内容: 使用时,我找不到任何排序结果的方法 就我而言,我想按.Ports订购 如何订购结果? 问题答案: 列出容器 格式 概要 显示容器及其命令 在表格中显示带有标签的容器 在表中显示带有节点标签的容器
问题内容: 用Python的方式搜索或操作排序序列是什么? 问题答案: 是标准库的一部分-您正在寻找这种东西吗?