0

私のエラスティカ型の構成は次のようになります。

            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: ~

FOS\ElasticaBundle\Repository を拡張する Repository クラスがあり、並べ替え以外はすべてうまく機能します。

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

完全に順序がなく、無関係な結果が得られます。次に、モデル ID をインデックスに追加し、ID で並べ替えようとしましたが、成功しませんでした。

4

1 に答える 1

2

解決策は、created_at フィールドに {type:date} を設定することです。その場合、タイムスタンプによる ES の並べ替えで、すべて問題ありません。

何らかの方法で category.id がメイン ID をオーバーライドし、エンティティ ID ではなく category.id で並べ替えられた結果が得られたため、ID による並べ替えが機能しません。

于 2015-02-06T11:34:41.917 に答える