1

インデックスが総ディスク容量の 10% 以上を占めるたびに、SOLR インデックスをパージしたいと考えています。パージにより、最も古いドキュメントが削除され、インデックス スペースが合計スペースの 10% 未満になります。これらの最も古い文書を見つけるにはどうすればよいですか?

単一のドキュメントのサイズを見つけ、それをベースとして使用して、削除するドキュメントの数を決定することを考えました(日付の昇順および行= Nでソート)。それについて行く他の方法はありますか?ありがとう。

4

2 に答える 2

1

ドキュメントのインデックスを作成するときに、ドキュメントがインデックスに追加された日時を記録するタイムスタンプ フィールドを有効にできます。次に、タイムスタンプ フィールドに対してクエリを実行して、最も古いドキュメントを特定できます。以下は、Solr の例の schema.xml に含まれていたが、最近のバージョンでは削除された例です。

 <!-- Uncommenting the following will create a "timestamp" field using
    a default value of "NOW" to indicate when each document was indexed.
 -->
 <!--
  <field name="timestamp" type="date" indexed="true" stored="true" default="NOW" multiValued="false"/>
 -->

ドキュメントの平均サイズを決定し、それに基づいてセット数を削除するという戦略は、有効なオプションのように思えます。

于 2013-10-11T01:35:41.353 に答える
0

これを試すことができると思います:

  1. (averageDocSize = indexSize/totalDocuments) を使用して、平均ドキュメント サイズを取得します。
  2. 10% のサイズを計算します (sizeToDelete = indexSize * 0.1)。
  3. 削除するドキュメント数を計算します (n = sizeToDelete/averageDocSize)。
  4. 以前のクエリを使用して、最も古い n 個のドキュメントを取得します。
  5. ドキュメントを削除する

インデックス サイズ ドキュメントの総数

于 2013-10-11T14:52:58.560 に答える