/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 がインデックスを再作成するのに十分な時間がなかったことをゲストに伝えました。アイデアや解決策はありますか?