2017-02-11 10 views
0

私はElasticsearchを主にデータ分析に使用する予定です。私は多くの、疎な数値(最大4バイト)の属性を持つ大きな文書を持っています。私の文書のほとんどのフィールドには値の約30%しかありません。私が正しく理解すれば、いくつかのデータベースに見られる柱状のデータレイアウトに似たDoc Values機能を利用することができます。私はElasticsearch/Luceneがどのようにこのデータを保存するのだろうと思っていました。圧縮(例えばランレングス)が使用されているか、またはヌルがストレージと同じスペースを値とする密なデータレイアウトですか?文書検索値でのElasticsearch/Lucene null処理

+0

[こちら](https://www.elastic.co/guide/en/elasticsearch/reference/current/null-value.html)は役に立ちますか? – pratikvasa

答えて

0

NULL値の場合、ElasticSearchのデフォルトの動作では、フィールドをまったく追加しません。 null_valueを使用してフィールドを強制的にマップすることはできますが、タイプはNULLに対応しています。例:longフィールドは文字列null_valueでマッピングすることはできません。

この問題に対処するために、ElasticSearchはドキュメント内にないフィールドのデフォルトスペースを割り当てません。しかし、値が決してないフィールドでクエリを実行する場合は、MissingFieldExceptionに入ることがあります。これを避けるには、インデックスを作成する前にフィールドを明示的にマッピングします。明示的にマップする場合は、フィールドのnull_valueプロパティをデータ入力範囲外に設定してください。

+0

はい、私がフィルタリングしたいすべてのフィールドをマップすることを意図していました。しかしこれは疑問を提起する。本当に欠損値を0に設定しますか?つまり、0は有効な値であり、nullの代わりに使用しないでください。 –

+0

申し訳ありませんが、私が書いた文章は間違ったメッセージを解釈しました。私の答えを編集しました。欠落しているフィールドのデフォルト値は0に設定されません。値をまったく設定しないので、明示的にマップしても 'MissingFieldException'で終わることがあります。より安全な側では、 'null_value'フィールドの値を入力範囲外の値(long.MIN_VALUEやint.MIN_VALUEなど)に設定することができます。 – NutcaseDeveloper

関連する問題