非常に複雑な集計があります。その複雑さは、has_parent 集計がないことが原因です。そのため、groovy を使用して実装されています。私が抱えている唯一の問題は、集計でカウントされるドキュメントをフィルタリングすることです。
集計は次のようになります: https://gist.github.com/serj-p/c4fcc9810b3b627de294 この集計の目的は、連絡先が卒業した大学のトップを構築することです。連絡先ドキュメントには、Facebook のプロフィールである子ドキュメントがあります。最後のものには、大学を表すフィールドがネストされているため、_source フィールドにアクセスします。
ご覧のとおり、最初にフィルタリングを実行します。
{
"match_phrase_prefix": {
"organizations.name": "stan"
}
}
関連するドキュメントを持っていない連絡先を除外します。「organizations.name」は次のように分析されます
{
"filter": [
"lowercase",
"standard",
"trim",
"asciifolding",
],
"type": "custom",
"tokenizer": "standard"
}
このフィールドをフィルタリングするためにappleidされているテキストは、同じ方法で分析されています。特定のネストされたドキュメントをフィルタリングする必要があるスクリプト内で、フィールド値とフィルタリングテキストの同じ処理を行うのは非常に難しいことがわかりました。そのため、スクリプトから ES API にアクセスしてそうする可能性を探しています。
事前にアドバイスをありがとう