私は本のElasticsearchデータベースを持っている:Elasticsearch - ユニークカウントの集計
{
"id": 1,
"name": "Animal Farm"
},
{
"id": 2,
"name": "Brave New World"
},
{
"id": 3,
"name": "Nineteen Eighty-Four"
},
{
"id": 4,
"name": "Animal Farm"
},
{
"id": 5,
"name": "We"
}
あなたが見ることができるように、1
のid
と4
と本が競合ブック名「動物農場」を持っています。しかし、彼らは別の本です。 1つはGeorge Orwell、もう1つは文字通り農場の動物に関するものです。
本の名前が矛盾する頻度を知りたいと思います。上記の例では、期待される結果は次のとおり
{
"conflicts": [
{
"num_of_books": 2,
"count": "1"
},
{
"num_of_books": 1,
"count": "3"
}
]
}
2
のnum_of_books
のエントリは、「動物農場」の衝突であり、(従ってcount
が1
である)一度起こりました。他の3冊の本はすべて異なる名前なので、num_of_books
が1
、count
が3
のエントリに表示されます。 I には本の名前が必要です。カウントだけが重要です。
私はSQLがこれを行うには、「サブクエリ」を持って知っている:
SELECT num_of_books, COUNT(*) AS _count
FROM (
SELECT COUNT(*) AS num_of_books
FROM books
GROUP BY name
)
GROUP BY num_of_books;
私はNested AggregationとSub-Aggregationsの記事を読んで、私の目標を達成する可能性を見ることができませんでした。
コメントありがとうございます!
は答えてくれてありがとう、しかしデータwouldnの量:たとえば、あなたが変換セクション
num_of_books
、このようなものを含んでいるでしょうに次のコードを追加することができますプラグインのヘッドを使用して私はクライアント側で外部集約を行うことができません。サーバー上ですべての計算を行う方法はありますか?スクリプトフィールドを使うのと同じですか? –初心者の方には、パフォーマンスがどのような結果を出すのかを試してみましたか?ヘッドプラグインを使用すると、1分以内に動作するかどうかを確認できます。 – Val
はい、私はあなたのソリューションを試しました、そして、それは私の顧客がそれを待つのには時間がかかります。私は計算が10秒未満で完了する必要があります。 –