データを集約する唯一の目的として、Elasticsearchを使用することは間違いありません。私はこのような設定を数回見ました。たとえば過去のプロジェクトでは、データのインデックスを作成しましたが、財務レポートを作成するためにのみ集計を実行していましたが、ドキュメントやヒットを得る必要はほとんどありませんでした。ユースケースの99%は単純にデータを集約したものでした。
あなたは
に、そしてあなたが調整でき、あなたのマッピングなどのユースケースを持っている場合はenabled
の役割は、あなたのデータがインデックス付きであるかどうかを判断することです。デフォルトではtrueですが、falseに設定すると、データは単純に(_source
)に保存されますが、アナライザーによって完全に無視されます。つまり、分析、トークン化、インデックス化されないため、データは解析されません。検索可能な場合は、_source
を検索できますが、検索することはできません。集計を使用する必要がある場合は、enabled
がtrue(デフォルト値)である必要があります。
store
パラメータは、フィールドを保存するかどうかを決定するためのパラメータです。既定では、フィールド値はインデックスに登録されますが、既に_source
に格納されているため保存されず、ソースフィルタを使用して取得できます。集計の場合、このパラメータは何の役割も果たしません。
ご利用の場合のみ集計程度であれば、あなたがすべてであなたが必要なことでしょう、すべてはそれらを集約するために、インデックスフィールド値にあるので、
_source
を保存していない、すなわち、
_source: false
を設定するために誘惑されるかもしれません
が、これはありますめったにいい考えではありませんfor various reasons。
あなたの主な質問に答えるために、集計はインデックスに依存しますが、集計に使用される(doc-)値は専用ファイルに書き込まれます。内部ファイルの構造は、集計を構築するためのインデックス。
あなたはES 1.xのを使用している場合、あなたは(分析した文字列やブールフィールドを除く)に集約したいと思うすべてのフィールドに対してtrueにdoc_values
を設定してください。
ES 2.xを使用している場合は、デフォルトでdoc_values
がtrueであるため、特別な操作は必要ありません。
更新:
それは基本的に転置インデックスと同じ情報が含まれていますが、カラム・で編成され、集計がdoc_values(すなわちPer Document Values.dvd
と.dvm
Luceneのファイル)に依存していることは注目に値しますこれにより、集約の効率が大幅に向上します。
出典
2016-05-19 03:46:39
Val
お返事ありがとうございます。しかし、ディスク・レベルのデータ構造を使用している場合、どのように*集計がインデックスに依存しているかはまだ分かりません。 – farthVader
インデックスISは[ファイルに格納されたいくつかのディスクレベルのデータ構造](https://lucene.apache.org/core/5_0_0/core/org/apache/lucene/codecs/lucene50/package-summary)のセットで構成されています.html#Overview):-)いくつかはヒープにロードされ、いくつかはファイルキャッシュにロードされますが、集計を含むすべてのものが最終的に1つまたは複数のファイルに格納されたデータ構造に格納されます。 – Val
意味があります。ただ明確にするために、集計は逆索引とは対照的に順索引に依存します。これは検索用です。しかし、両方の種類のインデックスがセグメントインデックス内に存在します。右の音ですか? – farthVader