您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

如何根据ElasticSearch中的项目数对搜索结果进行排序?

如何根据ElasticSearch中的项目数对搜索结果进行排序?

您可以为包含标签数量的其他字段建立索引,然后在其上轻松地对结果进行排序。否则,如果您愿意在查询时付出一点性能成本,那么有个不错的解决方案不需要重新索引数据:您可以根据如下脚本进行排序

{
    "query" : {
        "match_all" : {}
    },
    "sort" : {
        "_script" : { 
            "script" : "doc['tags'].values.length",
            "type" : "number",
            "order" : "asc"
        }
    }
}

从基于脚本的排序部分可以看到:

请注意,对于基于单个自定义脚本的排序,建议使用custom_score查询,因??为基于分数的排序更快。

这意味着最好使用自定义分数查询来影响您的分数,然后按分数排序,如下所示:

{
    "query" : {
        "custom_score" : {
            "query" : {
                "match_all" : {}
            },
            "script" : "_score * doc['tags'].values.length"
        }
    }
}
其他 2022/1/1 18:16:34 有416人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶