100 億のドキュメントがあります。ドキュメントの 1 つのフィールドはタイムスタンプ (ミリ秒) であり、インデックス作成時に次のマッピングが使用されます。
timestamp:
type: "date"
format: "YYYY-MM-dd HH:mm:ss||YYYY-MM-dd HH:mm:ss.SSS"
ignore_malformed: true
doc_values: true
検索するときは、範囲フィルターを使用します。doc_value を使用しているため、レンジフィルターは内部的に逆インデックスを使用して検索します。それはある種の遅さです。
The execution option controls how the range filter internally executes. The execution option accepts the following values: index: Uses the field’s inverted index in order to determine whether documents fall within the specified range.
マッピングを別の方法で変更した場合、つまり、時間/秒/ミリ秒の代わりに日を使用します。
day:
type: "date"
format: "YYYY-MM-dd"
ignore_malformed: true
doc_values: true
検索するときは、範囲フィルターを使用すると高速です。
パフォーマンスが異なる理由を誰かが説明できますか。
最初のもの(秒/ミリ秒を使用)、逆インデックス(内部的には一種のハッシュテーブルであると想定)には膨大な数のキーがあります。2 つ目 (使用日のみ) では、逆インデックスのキーははるかに少なくなります。それが理由ですか?