使用弹性搜索显示特色结果

时间:2014-10-21 13:50:14

标签: php sorting pagination elasticsearch elastica

我正在使用Elastica在PHP上使用弹性搜索。

我正在检索由项目组成的列表。一些项目由编辑支付和/或选择。目前,我只是通过自定义字段“得分”对它们进行排序,根据质量对这些项目进行排名。我希望有一种方法可以默认显示5个随机列表(仅当它们没有搜索或过滤时),这些列表由编辑支付并选择。

所以我目前正在做的是使用custom filter score query检索这5个列表,将脚本设置为使用random()。在按分数排序的单独查询中,我排除了这5个列表。我的问题当然是分页,它似乎是一个黑客,使用两个查询,并为此目的排除一个查询的结果。

我有这样的事情:

{
    "custom_filters_score" : {
        "query" : {
            "match_all" : {}
        },
        "filters" : [
            ...
        ],
        "script" : "random()"
    }
}

所以我的问题是,最简单的方法是什么?我已经看过功能评分,不确定这是否是我正在寻找的。

1 个答案:

答案 0 :(得分:0)

我不确定如何使用Elastica完成此操作,我从未使用过它。但是在ElasticSearch中,您希望使用random_score函数,其种子值将与分页保持一致。这样你可以确定不会在不同的页面上多次获得相同的结果。