2016-08-05 7 views
0

elasticsearchの7つのフィールドで集計を行い、データTopHitsを取得し、計算をSumAvgとする必要があります。多くのループ/再帰なしでヒットと計算の最新バケットを取得する可能性はありますか?7つのフィールドによる弾性検索集計

答えて

1

Elasticsearchのドキュメントによると:

「用語の集約が同じドキュメント内の複数のフィールドから用語を収集サポートしていない理由はtermsaggが文字列の項は値そのもの集めるのではなく、グローバル使用していないということです。フィールドに固有のすべての値のリストを生成するために、序数を使用してフィールド内のすべてのユニークな値のリストを生成することができます。複数のフィールド:

スクリプト スクリプトを使用して、複数のフィールドから用語を検索します。これにより、グローバル序数の最適化が無効になり、単一フィールドから用語を集めるよりも時間がかかりますが、検索時にこのオプションを柔軟に実装できます。

copy_toフィールド 2つ以上のフィールドから用語を収集することが事前に分かっている場合は、マッピングでcopy_toを使用して、両方のフィールドの値を含むインデックス時に新しい専用フィールドを作成します。あなたは、グローバル序の最適化の恩恵を受けるこの単一のフィールド、上で集約することができ、「

出典:https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-terms-aggregation.html#_multi_field_terms_aggregation

EDIT:あなたはcopy_toフィールドを使用する場合は、あなたがないので、インデックス、それに理由がありません ありがとう、

"metaFieldName" => [ 
    "type" => "string", 
    "index" => "not_analyzed" 
] 
+0

素晴らしいけど、私は1つの文字列としてのアナライザせずにそのフィールドを保存することができ – Squeez

+0

@Squeez::。このために、あなただけのマッピングを変更する必要があり、それを分析する必要はない?を参照してください編集:) – Pandawan

+0

おかげで、私はこの問題を解決しました。私は手動でcopy_toをやっています:) 2つのタイプの2つの集約を行い、少しの違いを持つ1つの集約バケットから2つ目の集約から集約バケットを取得するためにバケットキーを使用するので、クールです。 – Squeez

関連する問題