我正在使用Django Haystack和ElasticSearch后端作为我的搜索页面。我使用MongoDB作为我的数据库
在我的搜索页面中,一切正常。
问题
我的web应用程序使用外部脚本使用pymongo更改后端数据库中的字段
我的数据库有两个字段(文件、分析)
第三方脚本将运行并将分析字段更改为True或False。
运行脚本后,当我搜索文件名时,它会在结果中显示更新的Analysis。
但是当我搜索分析字段时,(比如我搜索True/False),它没有列出当前更新的分析,尽管它已经更新。
例如
搜索:filename
结果:filename True
Search: True
结果:未找到结果
只有在我update_index后它才有效
我所尝试的
所以我想我必须update_index。但是我不知道如何从外部python脚本更新。
我试着运行
os.system("python /myapp/manage.py update_index")
我得到了错误
Unknown command: 'update_index'
当我检查外部脚本中可用的管理命令时,它没有列出haystack命令。
os.system("python /myapp/manage.py")
Available subcommands:
[auth]
#Things under [auth]
[contenttypes]
#Things under [contenttypes]
[django]
#Things under [django]
[sessions]
#Things under [sessions]
[staticfiles]
#Things under [staticfiles]
这里没有显示haystack子命令,这与我在终端中运行的相反。
如果我在终端上运行
#other subcommands
[haystack]
build_solr_schema
clear_index
haystack_info
rebuild_index
update_index
因此,我希望结果
Search:True
Results:filename-True
我如何实现这一点?
如何从外部脚本update_index?
任何其他想法?
最可能的情况是,您试图调用命令,而不是从django所在的虚拟环境。下面的答案是正确的。但如果您想按自己的方式调用command,则应运行以下操作:
os.system("/path/to/your/venv/bin/python /myapp/manage.py")
通过将此项添加到设置中,可以启用实时更新。py:
HAYSTACK_SIGNAL_PROCESSOR = 'haystack.signals.RealtimeSignalProcessor'
它将与销毁update
命令类似,如果映射索引中有任何更新,它将自动触发。
更多详情请点击这里:
http://django-haystack.readthedocs.io/en/v2.4.1/signal_processors.html#realtime-realtimesignalprocessor
如果重新索引可能需要一些时间,您应该使用队列来防止请求/响应周期受到阻碍,这里建议可能的解决方案,如芹菜:
http://django-haystack.readthedocs.io/en/v2.4.1/other_apps.html#ref-其他应用程序
以下是如何从代码中执行管理命令:
from django.core.management import call_command
call_command('update_index', *args, **options) # args and opions are optional.
阅读django文档中的更多内容:https://docs.djangoproject.com/en/dev/ref/django-admin/#running-代码中的管理命令
问题内容: 我正在尝试学习JavaFX,并将swing应用程序转换为JavaFX。我想做的是使用JavaFX来显示程序的进度。 我以前在Swing中所做的是首先使用自定义JComponent创建一个JFrame。然后让我的主程序调用自定义JComponent的方法,该方法将更改JComponent和repaint()中的形状颜色。 下面给出了我想在JavaFX中实现的目标的想法: 我目前将此作为我
问题内容: 我正在开发非OSGI应用程序,我需要更新骆驼路线中使用的某些属性的值(已加载BridgePropertyPlaceHolder)。所以我认为: 要使用酷炫的管理控制台Hawtio,以便使用JMX更新骆驼 创建一个将更新属性..的JMX MBean。 我成功创建了MBean操作并使用JMX对其进行了调用,但是我不知道如何更新依赖于这些属性的骆驼路线。 有没有一种方法可以从外部更新骆驼上下
问题内容: 我的应用程序在$ rootScope中初始化一个对象图,如下所示: …然后使用该对象图中的数据(仅1向绑定),就像这样… 这项工作正常,但是如果我随后(在页面渲染完成之后)尝试更新$ rootScope并将原始对象替换为新对象,则将其忽略。我最初以为这是因为AngularJS保留了对原始对象的引用,即使我已经替换了它。 但是,如果将使用方的HTML包装在控制器中,则可以按预期的方式重复
问题内容: 我有一个程序和一个脚本,希望将其合并到我的Web应用程序中。 我想使用它们来解析上传到我的网站的文件;处理过程可能需要几秒钟,因此我也避免阻止该应用程序。 我如何才能只接受文件,然后仅在控制器的子过程中运行程序和脚本? 问题答案: 参见child_process。这是一个使用的示例,它允许您在输出数据时写入stdin并从stderr / stdout中读取。如果您不需要写stdin并且
我最近收到一项维护Drupal站点的任务,其中一项任务是为开发站点编写备份和导入脚本,这样它就可以每天接收实时数据转储。 我已经这样做了,但是我们需要将Solr细节恢复到dev Solr数据库。但是,我只知道如何使用UI工具手动执行此操作(例如。“https://WEBSITE.co.uk/admin/config/search/apachesolr/settings单击“编辑”并更改UI菜单中的
问题内容: 我只需要更新,而不需要更新整个表单。我尝试使用,,,但没有人正在为我想。使用时,它正在检查不需要执行的验证。 我该如何实现? 问题答案: 首先,仅因为它根本不支持该属性,它的确不会与一起使用。也许您真的打算使用? 修复a身份后, 阅读完该答案后,您应该已经发现数据表在该特定的代码段中由标识。因此,应该采取以下所有措施: 请注意,直到PrimeFaces 3.3为止,在某些复杂的UI组合