2017-03-03 10 views
0

集計はすべての値を返すことができますか?スクリプトでこれを行う方法はありますか? aggeration projectMatchCountですべての値を返す集計

{ 
"size": 0, 
"_source":["docDescription","datasource"], 
"query": { 
    "match_all":{} 
}, 
"aggs":{ 
    "projectNameMatchCount": { 
     "filter" : { "match": { "docDescription": ".ppt" } }, 
     "aggs":{ 
     "names":{ 
      "terms":{"field":"_id"} 
     } 
     } 
    }, 
    "datasourceSourceMatchCount": { 
     "filter" : { "match": { "datasource": "NGA" } } 
    } 
}    

}

、私はフィルタを適用しています、と値を返すために、他のaggegrationを呼び出して、この用語は、グループを行います、私は私が望むすべてでグループを望んでいませんフィールド値を返します。

+0

あなたの質問から、正しい方法でaggが使用されているのが好きではありません。これを適切な例で説明してください。 – Rahul

答えて

1

集計は、特定のメトリックを駆動するためにデータセットをグループ化するためのものです。個々の要素を返すには、代わりに直接クエリ/フィルタを実行する必要があります。集計は、クエリによって絞り込まれ、クエリ/フィルタよりも比較的高価なデータセットで実行されるポストプロセスです。したがって、集計された指標が必要になるまで避けるべきです。

私の質問から理解していることは、2つの集計を使用しているということです。ある文書IDを返すようにし、もう1つでは、別のフィルタに基づいてカウントを返すようにします。 projectNameMatchCountのフィルター集合内でトップヒット集計を使用することで、これを行うことができます。 https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-metrics-top-hits-aggregation.html

しかし、それでもまだ、私はあなたとIDと他を返すために、単純にクエリを持つ2つの別々の合計クエリ時間の点でクエリとElasticSearch側で消費されるリソース、ものを作ることによって、より利益になると考えている。詳細についてドキュメントの数を返す集計。

+0

docDescriptionをコンマで区切った文字列として連結することは可能ですか? – user884424

+0

私はクエリ自体でそれを行う方法はないと思います。結果セットでスクリプトを実行する必要があります。しかし、それはかなり簡単な機能になります。結果セットのヒットを繰り返して、_ソースからdocDescriptionを取り出し、連結してください。 –

関連する問題