我在Linux中构建了一个cron作业,每5分钟运行以下命令来更新我的弹性搜索索引
php app/console fos:elastica:populate --no-reset --no-debug
我有一个文件附件的嵌套对象映射,如下所示:
...
types:
documents:
mappings:
Title: ~
Description: ~
Attachments:
type: "object"
properties:
File_Name:
content:
type: attachment
persistence:
driver: orm
model: Acme\AcmeBundle\Entity\Documents
provider: ~
listener: ~
finder: ~
它适用于在DB中索引我的文档,除了附件外没有任何问题。它在cron作业运行时不会为附件编制索引,但如果我手动运行 populate 命令,它将索引我的附件。这真的很奇怪,混淆了我
还有一件事可能有助于找到解决方案:我在Windows机器上构建了相同的计划任务来运行命令,它可以正常工作。
如果你能提供帮助,请欣赏它
答案 0 :(得分:0)
最后我可以解决这个问题。事实上,这不是FOSelasticabundle问题,问题在于cronjob 我正在运行crontab,如下所示:
#m h dom mon dow command
*/2 * * * * /var/www/Symfony/populateElastica.sh
我发现需要重定向脚本需要运行的路径才能完美运行
#m h dom mon dow command
*/2 * * * * cd /var/www/Symfony && /var/www/Symfony/buildAcmeIndex.sh
您需要将buildAcmeIndex.sh
的shell脚本定义为:
#! /bin/sh
echo -------------- Auto Index Started ----------------
/usr/bin/php /var/www/Symfony/app/console fos:elastica:populate --env=prod --no-reset
echo --------------- Auto Index done! -----------------
请记住将 php 的路径设置为Linux服务器中的正确路径。