私はorg.apache.solr.client.solrj.impl.HttpSolrServer.HttpSolrServer
solrを呼び出すために使用しています。
順次削除および追加操作の場合、私はsolrのように打っています
solr.addBeans(<solrDocs>);
solr.deleteByQuery(<Query>)
solr.commit();
とにかく、solr.execute(addbean、deleteByQuery1)のように、1回のsolr呼び出しで同じことを達成できますか?
solr wiki
に従って、複数のコマンドが 1 つのメッセージに含まれている可能性があることを知っています。solrjや他のJavaライブラリで同じことを達成する方法を知っておく必要があります。
これで何を達成したいですか?
アトミック操作。
ケースを見てみましょう: 2 つのプロセス (またはスレッド) P1 と P2 があります。それぞれ、追加 (対応する A1 と A2) と削除 (D1 と D2) 操作を実行します。シーケンスを次のようにします:
D1 (プロセス P1 によるドキュメント
の削除) D2 (プロセス P2 によるドキュメントの削除)
A2 (プロセス P2 によるドキュメントの追加)
P2.commit -> (これにより、D1 が Solr でもコミットされます)
A1 (プロセスP1によるドキュメントの追加):失敗したとしても、D1はロールバックしません(P2.commitのため)
私が欲しいのはP1.D1をロールバックすることです