触发所有待处理文档的 SOLR 提交的最简单方法(URL?)?

Posted

技术标签:

【中文标题】触发所有待处理文档的 SOLR 提交的最简单方法(URL?)?【英文标题】:Most simple way (URL?) to trigger SOLR commit of all pending docs? 【发布时间】:2011-12-10 13:35:11 【问题描述】:

使 SOLR 安装提交所有待处理文档的最简单方法是什么?

(在管理界面中没有明显的方法。在页面http://wiki.apache.org/solr/SolrOperationsTools 上提到了一个名为“提交”的脚本——但没有提示它在哪里。“提交”显然是一个可以添加到任何更新的选项POST,但我找不到对仅用于提交的单个 URL 的任何引用。)

【问题讨论】:

【参考方案1】:

这适用于 SOLR 版本

试试[solr url]/update?commit=true

例如,对于 SOLR 示例默认的 URL,来自同一台机器,http://localhost:8983/solr/update?commit=true 应该这样做。

对于 SOLR 版本 >= 5.0http://localhost:8983/solr/[collection_name]/update?commit=true

【讨论】:

是只提交更新语句还是所有待处理的语句? 这是一个独立的请求。提交所有未决的内容。测试一下。 谢谢,我就知道一定要这么简单! 澄清一下,不可能只提交待处理更新的子集。当您向 Solr 提交提交时,它将始终写入所有“添加”和“删除”。 这从 SOLR 5.X 开始不再起作用,需要集合名称。 localhost:8080/solr/collection_name/update?commit=true【参考方案2】:

由于 Solr 5 需要在 url 中添加集合名称,所以现在正确的答案是:

http://localhost:8983/solr/collection_name/update?commit=true

在以前的版本中,可以有一个默认集合(从示例中通常是 collection1),并且缩短的版本是有效的:

http://localhost:8983/solr/update?commit=true

仍然可以像第一种情况那样命名集合。

【讨论】:

【参考方案3】:

我会说“正确”答案中缺少某些内容 - URL 应包含集合名称,例如:http://localhost:8983/solr/mycollection/update?commit=true

【讨论】:

【参考方案4】:

我知道这是一个旧线程,但只是说还有一种方法可以通过管理界面执行此操作。

点击:

-> 左侧菜单中的数据导入

-> 然后勾选提交复选框

-> 然后执行

您将看到如下消息: “索引已完成。添加/更新:1 个文档。删除 0 个文档。(持续时间:01 秒)”

【讨论】:

以上是关于触发所有待处理文档的 SOLR 提交的最简单方法(URL?)?的主要内容,如果未能解决你的问题,请参考以下文章

在 PHP 中处理多个(未)选中复选框的最简单和最干净的方法

删除 celery / rabbitmq 中的所有待处理任务

Solr搜索引擎索引提交事务日志原子更新

solr 排序与文档分数计算

在 Git 中重置所有暂存文件的最简单方法是啥?

Django 抽象模型 + DB 迁移:测试抛出“无法更改表,因为它有待处理的触发事件”