如何通过 curl 查询删除 SOLR 索引数据?

Posted

技术标签:

【中文标题】如何通过 curl 查询删除 SOLR 索引数据?【英文标题】:How to delete SOLR indexed data by query with curl? 【发布时间】:2012-02-01 22:34:54 【问题描述】:

我有一个这样的 SOLR schema.xml:

<field name="cartype" type="lowercase" indexed="true" stored="true"/>
<field name="color" type="lowercase" indexed="true" stored="true"/>

我想使用 curl 命令从 SOLR 数据库中删除“blue”和“stationwagon”标记的记录。

但我没有使用以下命令:

curl http://46.231.77.98:7979/solr/update/?commit=true -H "Content-Type: text/xml" -d "<delete>(cartype:stationwagon)AND(color:blue)</delete>"

你有什么建议吗?

【问题讨论】:

【参考方案1】:

你必须添加query标签。

<delete><query>(cartype:stationwagon)AND(color:blue)</query></delete>

【讨论】:

这是否等同于+cartype:stationwagon +color:blue【参考方案2】:

这样会更容易:curl "http://46.231.77.98:7979/solr/collection/update/?commit=true&amp;stream.body=&lt;delete&gt;&lt;query&gt;(cartype:stationwagon)AND(color:blue)&lt;/query&gt;&lt;/delete&gt;"

这是一个简单的GET 请求,您只需在查询字符串中添加参数stream.body=&lt;delete&gt;&lt;query&gt;(cartype:stationwagon)AND(color:blue)&lt;/query&gt;&lt;/delete&gt;

【讨论】:

【参考方案3】:

使用 JSON 代替 XML:

curl -g "http://localhost:8983/solr/$core/update" \
     -H 'Content-Type: application/json' \
     -d '"delete":"query":"field:value"'

【讨论】:

以上是关于如何通过 curl 查询删除 SOLR 索引数据?的主要内容,如果未能解决你的问题,请参考以下文章

Solr索引数据

3.solr学习速成之索引添加 查询 删除

如何从 solr 和 hbase 中删除所有数据

Solr/Solrj:如何确定索引中的文档总数?

Solr06-SolrJ的使用及其高级查询

《艳遇SOLR》9--solr查询--逻辑运算查询