1

/posts最新の 10 個のアクティブな投稿を一覧表示するURLがあります。最後の投稿 (10 件中 1 件目) を編集すると、変更がリアルタイムで Elasticsearch に同期されないようです。

これが私のコードです:

    $post = $this->findPostBy....;

    /** @var EntityManager $entityManager */
    $entityManager = $this->getDoctrine()->getManager();
    $post->setStatus(PostModel::STATUS_DELETED);
    $entityManager->persist($post);
    $entityManager->flush();

    return $this->redirect('/posts'); 

上記のコードが実行された後、リダイレクトされますが、編集されたばかりでステータスが削除/postsに変更された最後の投稿は、最新の 10件のアクティブな投稿としてリストされます (これは間違いです)。ページを更新すると消えます ( )。/posts

のコード/posts:

    /** @var TransformedFinder $finder */
    $finder = $this->container->get('fos_elastica.finder.index_name.post');
    $query = new Query();
    $filter = new Term(array('status' => PostModel::STATUS_ACTIVE));
    $query->setFilter($filter);
    $query->addSort(array('tttAt' => array('order' => 'desc')));
    $posts = $finder->find($query);

私のマッピング:

        types:
            post:
                mappings:
                    title:
                        type: string
                        analyzer: post_analyzer
                    description:
                        type: string
                        analyzer: post_analyzer
                    status:
                        type: integer
                    tttAt :
                        type : date
                    createdAt :
                        type : date
                persistence:
                    driver: orm
                    model: MyBundle\Entity\Post
                    finder: ~
                    provider: ~
                    listener: ~

誰かがその問題を解決する理由と方法を説明できますか?

更新: xdebug を使用してリダイレクトを約 1 秒または 2 秒遅らせると、投稿が表示され/postsなくなります。そのため、ElasticSearch がインデックスを再作成するのに十分な時間がなかったことをゲストに伝えました。アイデアや解決策はありますか?

4

2 に答える 2