我试图通过基于字段值提升_score来摆脱ElasticSearch中的排序。
我的文档中有一个字段:applicationDate。这是自EPOC以来经过的时间。我希望applicationDate越大(最近)的记录具有越高的分数。
如果两个文档的分数相同,我想在另一个字符串类型的字段上对它们进行排序。假设“status”是另一个可以有值的字段(可用、进行中、关闭)。因此,具有相同applicationDate的文档应该具有基于状态的_score。可用应该具有更多的分数,进行中应该具有更少的分数,关闭应该具有最少的分数。因此,通过这种方式,我不必在获得结果后对文档进行排序。
请给予我一下。
3条答案
按热度按时间bakd9h0s1#
您应该可以使用Function Score来实现这一点。根据您的要求,它可以像下面的示例一样简单:
bqjvbblv2#
您是否查看过函数得分?https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-function-score-query.html
请特别查看上述文档中的衰减函数。
szqfcxe23#
有一个名为rank_feature_field的新字段可用于此用例:
https://www.elastic.co/guide/en/elasticsearch/reference/current/rank-feature.html