gpt4 book ai didi

php - 存储库删除查询后,Symfony ElasticSearch不同步

转载 作者:行者123 更新时间:2023-12-03 01:43:34 25 4
gpt4 key购买 nike

我正在使用foselastica,并且在删除查询后,收到错误“无法为所有Elastica结果(7)找到相应的教义对象(0)。ID:52、51、50、48、49、47、46”)存储库,但是查询确实在mysql数据库中删除:

class CandidatesRepository extends EntityRepository
{
public function candidatesFileimportDelete($id)
{
$q = $this->createQueryBuilder('c')->delete()
->where('c.fileImportId = :id')->setParameter('id', $id);
return $q->getQuery()->getResult();
}
}

当我使用原则删除时,它会同步并从ES中删除所有候选人
$candidates = $this->getDoctrine()
->getRepository(Candidates::class)
->findAll();


foreach($candidates as $candidate){
$em = $this->getDoctrine()->getManager();
$em->remove($candidate);
$em->flush();
}

代码示例:

实体
    /**
* @ORM\Entity
* @ORM\Table(name="candidates_user")
* @ORM\Entity(repositoryClass="CandidatesBundle\Entity\Repository\CandidatesRepository")

*/
class Candidates
{
// filled with privatre properties and public getters and setters
}

配置文件
fos_elastica:
clients:
default: { host: localhost, port: 9200 }
indexes:
candidates:
types:
candidates:
mappings:
id: { type: integer }
name: { type: string }
job: { type: string }
approached: {type: integer}
level: {type: string }
skills: {type: string}
email: {type: string}
mobile: {type: string}
city: {type: string}
province: {type: string}
country: {type: string}
linkedinUrl: {type: string}
addedCompany: {type: string}
note: {type: string}
dateAdded: {type: date}
deleted: {type: integer }
dateDeleted: {type: date}
platform: {type: string}
fileImportId: {type: integer}

persistence:
driver: orm
model: CandidatesBundle\Entity\Candidates
provider:
batch_size: 10
debug_logging: false
listener:
is_indexable_callback: "isSearchable"
insert: true
update: true
delete: true
finder: ~
repository: CandidatesBundle\Entity\Repository\CandidatesRepository

我的 flex 服务的一部分,以收集候选人
    /**
* Search all active candidates
*/
public function getAllCandidates($request, $showDeleted = false)
{

$finder = $this->container->get('fos_elastica.finder.candidates.candidates');
$boolQuery = new \Elastica\Query\BoolQuery();

if (!empty($request->get('s')) && $request->get('c')) {
if (in_array($request->get('c'), self::SEARCH_CATEGORIES, true)) {
$boolQuery->addMust(
$this->setQueryString(array($request->get('c')), $request->get('s'))
);
}
}

if ($showDeleted == false) {
$boolQuery->addMust(
$this->setTerm('deleted', array(0))
);
}

$query = $this->setSort($boolQuery, array('dateAdded' => array('order' => 'asc')));

if (!empty($request->get('sort')) && $request->get('cat')) {
if (in_array($request->get('cat'), self::CAT, true) &&
in_array($request->get('sort'), self::SORT)) {
$query = $this->setSort($boolQuery, array($request->get('cat') => array('order' => $request->get('sort'))));
}
}

$candidates = $finder->find($query, 3000);
return $candidates;
}

必需的 bundle 包:
"require": {
"php": ">=5.5.9",
"doctrine/doctrine-bundle": "^1.6",
"doctrine/doctrine-migrations-bundle": "1.2",
"doctrine/orm": "^2.5",
"friendsofsymfony/elastica-bundle": "^4.0",
"friendsofsymfony/user-bundle": "~2.0",
"gedmo/doctrine-extensions": "^2.4",
"incenteev/composer-parameter-handler": "^2.0",
"liuggio/excelbundle": "^2.1",
"sensio/distribution-bundle": "^5.0.19",
"sensio/framework-extra-bundle": "^3.0.2",
"symfony/monolog-bundle": "^3.1.0",
"symfony/polyfill-apcu": "^1.0",
"symfony/swiftmailer-bundle": "^2.3.10",
"symfony/symfony": "3.3.*",
"twig/twig": "^1.0||^2.0"
},
"require-dev": {
"doctrine/doctrine-fixtures-bundle": "^2.3",
"sensio/generator-bundle": "^3.0",
"symfony/phpunit-bridge": "^3.0"
},

最佳答案

¿可能是您必须使用管理器执行删除操作以触发FosElastica侦听的同步事件吗?如果是这样,您可以使用查询获取te实体,然后删除usign $ manager-> remove()

不确定100%,但是我目前正在使用FosElastica,它可以使ES更新,并且我不使用查询生成器进行删除。

关于php - 存储库删除查询后,Symfony ElasticSearch不同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45735394/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com