私はちょうど2つの別々のカウントを実行し、次のようにクライアント側の計算を実行するために非常にきれいになる免責条項を追加するつもりです:
使用することを除いて(のようなものを返します
GET /INDEX/_search
{
"size": 0,
"aggs": {
"types": {
"terms": {
"field": "type",
"size": 10
}
}
}
}
私の例のタイプではなくあなたの別個のキー):
"aggregations": {
"types": {
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 0,
"buckets": [
{
"key": "Article",
"doc_count": 881
},
{
"key": "Page",
"doc_count": 301
}
]
}
これを使用して、別のカウントを取って平均を計算します。上記に述べたがされた状態で
、ここで私が(単一の要求を経由して)から一緒に置くことができましたハック方法this
GET /INDEX/_search
{
"size": 0,
"aggs": {
"parent_agg": {
"terms": {
"script": "'This approach is a weird hack'"
},
"aggs": {
"four_oh_fours": {
"filter": {
"term": {
"message": "404 not found"
}
},
"aggs": {
"count": {
"value_count": {
"field": "_index"
}
}
}
},
"five_hundreds": {
"filter": {
"term": {
"message": "500 error"
}
},
"aggs": {
"count": {
"value_count": {
"field": "_index"
}
}
}
},
"404s_over_500s": {
"bucket_script": {
"buckets_path": {
"four_oh_fours": "four_oh_fours.count",
"five_hundreds": "five_hundreds.count"
},
"script": "return params.four_oh_fours/(params.five_hundreds == 0 ? 1: params.five_hundreds)"
}
}
}
}
}
}
これは、スクリプト内の計算に基づく集計値を返す必要があります。
誰かがこの2つの方法以外のアプローチを提供できる場合、私はそれを見たいと思うでしょう。お役に立てれば。
編集 - 同じスクリプトが無痛ではなく "表現"タイプで行われます(デフォルト)。ただ、次のように上記のスクリプトの値を置き換えます
"script": {
"inline": "four_oh_fours/(five_hundreds == 0 ? 1 : five_hundreds)",
"lang": "expression"
}
Luceneを経由して同じことを達成するためにここにスクリプトを更新しましたが
を表現私は私がちょうど確か私が尋ねる正しく理解したい、あなたを助けることができると思います:正確に「404が見つかりません」を含む別個の文書の数を、正確に「500エラー」を浮動小数点として含む別個の文書の数で割ったものを計算したいでしょうか? 「はい」とすると、メッセージフィールドは「キーワード」タイプとしてマップされていますか?いいえの場合は、必要な出力をもう少し明確にする必要があります。 – Miek
@MikeMichaelsはい、メッセージフィールドが "キーワード"タイプとしてマップされていることを確認してください。 – jonny