我有/posts
列出最新 10 个活跃帖子的网址。当我编辑最后一篇文章(这 10 篇中的第一篇)时,更改似乎不会实时同步到 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 没有足够的时间重新索引。有什么想法或解决方案吗?