我正试图找到一种方法来阻止使用solr api基于特定条件的solr提交。
目前,每个solr文档索引都有一个唯一的id。那么如果根据我的下面的代码已经存在id,我怎么能更新它不提交solr索引的solr api:
SolrInputDocument solrDoc = new SolrInputDocument();
solrDoc.addField("id", indexUrl);
solrDoc.addField("price",100);
HttpSolrServer server = new HttpSolrServer(endpoint);
UpdateResponse response = server.add(solrDoc);
server.commit();
由于
答案 0 :(得分:0)
你错误地将Solr误认为SQL服务器...... Solr提交与SQL提交完全不同。
Solr commit背后的想法是降低对磁盘的写入量。 Solr不是事务性的......你没有回滚能力 - 除了可能手动删除tlog文件夹。您需要完全重写提交功能以执行您想要的操作。
您可以在发送之前查询Solr的ID,但是您没有ACID保证,当它们被发送和提交时,不会有其他已经具有相同ID的文档。< / p>
您可以通过使用共享SQL服务器为您生成ID来获得ACID保证。或者通过使用zooKeeper来做同样的事情(虽然难以配置)。