当前位置: 首页 > 知识库问答 >
问题:

在记录删除时更新haystack索引,而无需重新索引整个数据库

穆理
2023-03-14

是否可以在不重新索引整个数据库的情况下更新整个haystack索引?我有一个260万条记录的数据库,每个记录都有相关的表。如果我跑步:

 python manage.py update_index --remove

我必须等几天才能完成索引,而实际上可能只有一两条记录需要重新索引。有什么解决办法吗?

更新:正如Bennylope所说,我可以使用get_updated_field仅索引新条目。如果我删除了一条记录,并且只希望从索引中删除该项,就会出现问题。我该怎么做呢?

共有1个答案

鲁鸿朗
2023-03-14

两个建议:向主记录添加修改时间戳,并在执行管理命令时使用SearchIndex中的get\u updated\u fieldfield方法,根据更新的最近程度过滤查询集。

第二种方法是实现实时或排队索引,以便在单个记录更新时对其进行索引。

 类似资料:
  • 您好,请原谅我的无知,因为我几乎没有时间安排,而且我的英语很差。我的问题是如何让haystack更新其索引在模型之外对数据库进行更改,我的意思是,想象一下,手动从数据库中删除注册表,或者使用第三方程序在数据库中添加和删除记录。我如何能使这些记录自动更新haystack,有可能做到这一点?(而且不必使用--remove命令update_索引,因为我的数据库非常大)嗯,我认为RealTimeProce

  • 有这么一种常见的情况:整个数据集非常大,以至于难于经常性的重建索引,但是每次新增的记录却相当地少。一个典型的例子是:一个论坛有1000000个已经归档的帖子,但每天只有1000个新帖子。 在这种情况下可以用所谓的“主索引+增量索引”(main+delta)模式来实现“近实时”的索引更新。 这种方法的基本思路是设置两个数据源和两个索引,对很少更新或根本不更新的数据建立主索引,而对新增文档建立增量索引

  • 假设我有两组对象“Questions”和“Users”,它们共享一个关系。 什么是最好的方法索引我的对象,以允许最新的变化反映在lucene IDEX? 是否应该为用户和问题提供单独的文档,并让lucene根据需要获取所需的问题/用户详细信息? 还是,走数据传输对象的方式?当发生更改时,只需删除这些文档并重新索引?

  • 问题内容: 我需要更改索引中的分片数量。索引很大,为了达到测试目的,我可能不得不将配置更改10-15次才能满意。是否有开箱即用的工具提供这种功能?或最简单的方法是做到这一点? 问题答案: 无论是Perl的和Ruby客户直接支持重建索引。 在Perl中,您可以执行以下操作: 在Clinton Gormley 的帖子中查找更多信息。 在Ruby中,您可以执行以下操作: 在相关的 Tyre 提交中找到更

  • 问题内容: 根据文档,我尝试按以下方式更新副本数 这将正确更改现有节点的副本数。但是,当logstash在第二天创建新索引时,number_of_replicas设置为旧值。 有没有一种方法可以永久更改此设置的默认值,而无需更新群集中的所有文件并重新启动服务? 我也尝试过 无济于事。 问题答案: 是的,您可以使用索引模板。索引模板是为集群中创建的新索引设置默认设置(包括映射)的好方法。 索引模板

  • 根据文档,我尝试过如下更新副本的数量 这将正确更改现有节点的副本计数。但是,当logstash在第二天创建新索引时,复制副本的数量设置为旧值。 是否有一种方法可以永久更改此设置的默认值,而无需更新所有的集群中的文件并重新启动服务? 我也试过了 没用。