从 PostgreSql 中删除一行后如何重新索引 solr?

How to reindex solr after deleting a row from PostgreSql?

我正在从我的数据库中获取 csv 转储并使用 solr.If 为 table 编制索引 我从 table 中删除了一行,如何从 Solr 索引中删除该行?

您必须为 solr 添加了一个唯一键。

检查你的 solr.xml 是否相同。

获取该行的 ID 并将查询触发到 solr

在查询中提及 id,因为已提及 111111。

http://localhost:8983/solr/update?stream.body=
<delete><query>id:111111</query></delete>&commit=true

如果要删除索引中的所有项目,只需使用此查询:

<delete><query>*:*</query></delete>

更多信息请浏览

https://wiki.apache.org/solr/UpdateXmlMessages

当您从 Postgre 数据库中删除条目时。要么保留标志,要么在另一个名为 X 的 table 中创建相同的已删除 ID 的条目。稍后在 运行 上,用于 solr 的调度程序从 Solr 中清除已删除的条目。 运行 通过将这些 id 从 tabel X 传递给它并从 solr 中删除条目来删除 solr 上的查询。

有几种策略:

  1. 通过在原始数据库中将它们标记为已删除并在 DataImportHandler
  2. 中发送特殊的 $deleteDocById 密钥,了解您删除的 ID 是什么
  3. 定期删除所有内容并从头开始重新编制索引,这样遗留记录就会消失
  4. 自动为每条记录添加一个 "date-indexed" 的字段(例如在 UpdateRequestProcessor 链中),然后在重新索引结束时,运行 查询以删除任何具有旧记录的记录"date-indexed" 因为它表示尚未更新。