2016-05-19 4 views
1

現在の私のケースでは、ElasticSearchをドキュメントストアとして使用しています。そこでは、面付け検索機能を構築しています。ElasticSearchは集計にのみ使用できますか?

docs状態は、以下:

は、集計をソートし、スクリプト内のフィールド値へのアクセスは、異なるデータ・アクセス・パターンを必要とします。

Doc値は、文書インデックス時に作成されるディスク上のデータ構造であり、このデータアクセスパターンを可能にします。 _sourceと同じ値を格納しますが、並べ替えと集計の方が効率的な列方向のにあります。

これは集計がインデックスに依存しないことを意味していますか?その場合は、{"index": "no"}と設定して、フィールドのインデックスを作成しないようにすることをお勧めしますか?

これは小さな偏差ですが、の設定はになりますか? インデックスとはどのように違いますか?

集計がすべての場合は、ElasticSearchを使用する必要がありますか?私はMongoDBのような他のソリューションを選択する必要がありますか?その場合は、パフォーマンスの考慮事項は何ですか?

HELP!

答えて

2

データを集約する唯一の目的として、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のファイル)に依存していることは注目に値しますこれにより、集約の効率が大幅に向上します。

+0

お返事ありがとうございます。しかし、ディスク・レベルのデータ構造を使用している場合、どのように*集計がインデックスに依存しているかはまだ分かりません。 – farthVader

+0

インデックスISは[ファイルに格納されたいくつかのディスクレベルのデータ構造](https://lucene.apache.org/core/5_0_0/core/org/apache/lucene/codecs/lucene50/package-summary)のセットで構成されています.html#Overview):-)いくつかはヒープにロードされ、いくつかはファイルキャッシュにロードされますが、集計を含むすべてのものが最終的に1つまたは複数のファイルに格納されたデータ構造に格納されます。 – Val

+0

意味があります。ただ明確にするために、集計は逆索引とは対照的に順索引に依存します。これは検索用です。しかし、両方の種類のインデックスがセグメントインデックス内に存在します。右の音ですか? – farthVader

関連する問題