工作流程:
远程源 ->导入到MySQL ->选择MySQL中所有过时的记录 -> 使用所有过时的记录ID将请求发送到SOLR -> 通过多个ID删除Solr >将新记录推送到Solr。
通过多个ID删除文档的正确查询语法是什么?
我正在尝试:
id:(1 OR 2 OR 3)...
id:(1 AND 2 AND 3)
在php中:
$query = sprintf('id:(%s)', implode(' AND ', $toDelete));
$solrUrl = sprintf('http://%s:%s/%s/%s', $this->solr['host'], $this->solr['port'], $this->solr['path'], $action);
$docs = [
'delete' => ['query' => $query]
];
$http = new Client();
$http->post($solrUrl, json_encode($docs),['type' => 'json', 'timeout' => 30]);
答案 0 :(得分:3)
提示只是将删除请求重写为按查询删除,然后将所有要删除的ID提交为简单的OR查询。不用说,这已经足够快并且可以解决我们的问题。
总结一下;写一个按查询删除的语句为:
id:(123123 OR 13371337 OR 42424242 ..)