0

ElasticSearch を使用している場合、json ドキュメントを保存して、デフォルトで検索できます。また、フィールド タイプとインデックス作成の設定を記述できるいくつかのインデックス設定を指定することもできます。私の質問は、ElasticSearch にデータを保存する内部実装についてです。MongoDB と同様に、動的 json データをここに保存できるため、すべてのドキュメントがそのまま保存されます (実際には BSON ですが、ここでは関係ありません)。例えば:

{
  firstName:"A",
  lastName: "B"
}

ここで、「スキーム データ」は「実際のデータ」よりも多くのディスク容量を必要とすることがわかります。そのため、MongoDB では、次のように「スキーム データ」のサイズを最小限に抑えることをお勧めします。

{
   f:"A",
   l:"B"
}

このスキームをサポートするために、アプリケーション コードでいくつかのマッピングを提供します。Elasticsearch(Lucene)では、いくつかのスキームを指定できるため、内部的には「実際の+スキーム」ではなく「実際のデータ」のみを保存できますが、動的jsonデータも保存できるため、これについてはわかりません。

質問は、ElasticSearch でそのような最適化を実装する必要がありますか?

4

1 に答える 1

3

はい、少し多くのスペースが必要ですが、心配する必要はありません。Elasticsearch のドキュメントは、完全な JSON として_sourceフィールドに保存されます。ディスク容量を占有し、結果を返すときに一時的にメモリを使用します。

ただし、_sourceフィールドを圧縮するように設定できます。バージョン 0.90 以降の Elasticsearch では、セグメント全体が圧縮され、フィールド名が圧縮の候補として適しています。

私は自分の文書を不可解なものよりも読みやすいものにしておくことを好みます。

于 2013-03-29T10:56:56.930 に答える