【问题标题】:Solr Delete By limiting number of documentsSolr 通过限制文件数量删除
【发布时间】:2016-05-18 00:58:45
【问题描述】:

我们正在尝试使用以下命令对 Solr 文档进行基于日期的删除。 是否可以限制编号。要说 200K 的文件?

curl http://localhost:8983/solr/keyspace.core/update?commit=true --data '<delete><query>timestamp:[* TO NOW/DAY-30DAYS]</query></delete>' -H 'Content-type:text/xml; charset=utf-8'

【问题讨论】:

  • 这个问题不是很清楚。如果要进行基于时间戳的删除查询,限制在哪里?你是说你只想要最新的 200K 文件吗?
  • 限制文档的原因是因为我们不会通过执行大量删除来使集群过载。因此,如果我们需要删除 1M 文档,那么我们可以通过一次删除 200K 文档来批量处理,这样集群就不会过载。这有意义吗?

标签: apache solr lucene http-delete


【解决方案1】:

solr删除数据时无法添加限制。

您可以通过IdQuery 删除Solr 中的数据。

按Id删除文档

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

如果要删除匹配多个字段的项目,只需添加另一个查询:

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

如果要删除索引中的所有项目..

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

【讨论】:

    【解决方案2】:

    一种有效地处理从大型集合中删除旧文档的方法是首先不要使用单一集合。这在存储不断累积的日志的集合中很常见。

    解决方案是使用collection aliases 并让每个单独的集合代表一个特定的时间段,并使用“别名”将相关集合聚合到一个组合视图中。然后,只需重新发出具有不同集合列表的新别名命令,就可以完全删除旧集合。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-12-23
      • 1970-01-01
      • 1970-01-01
      • 2022-10-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多