FOSElasticaBundle排序不起作用

时间:2015-02-05 15:58:05

标签: symfony elasticsearch foselasticabundle

我的弹性类型的配置如下所示:

            acme_article:
                mappings:
                    title: {type:string, index_analyzer:acme_analyzer}
                    content: {type:string, index_analyzer:acme_analyzer}
                    slug: ~
                    media: {type:string, index_analyzer:acme_analyzer}
                    categories:
                        type: "object"
                        properties:
                            name: ~
                            id: ~
                    instance:
                        type: "object"
                        properties:
                            name: ~
                    created_by: ~
                    created_at: ~

我有Repository类,它扩展了FOS \ ElasticaBundle \ Repository,除了排序外,一切运行良好。

    $query = new \Elastica\Query();
    $query->setSort(array('created_at' => array('order' => 'desc')));        
    return $this->find($query);

得到一些相关的结果,完全没有秩序。然后,我尝试在索引中添加模型ID并尝试按id排序,但也没有成功。

1 个答案:

答案 0 :(得分:2)

解决方法是在created_at字段上设置{type:date}。在那种情况下,ES按时间戳排序,一切正常。

按ID排序不起作用,因为在某种程度上,categories.id覆盖了主要ID,然后我得到了按category.id排序的结果,而不是实体ID。