人々が行った旅行を保存するマッピングがあり、そのマッピングにユーザー ID のフィールドがあるとします。例えば:
"trip": {
"destination": {
"type": "string"
},
"departure_date": {
"type": "date"
},
"return_date": {
"type": "date"
},
"user_id": {
"type": "integer"
}
}
人数 (user_id) でバケット化された旅行の量 (このマッピングを持つエントリ) を返すクエリを作成しようとしています。
たとえば、次のようなものが返されます。
amount of trips | people
---------------------------
1| 723
2| 422
3| 210
4| 82
5| 11
6| 0
7| 1
...
この種のクエリに直面する方法がわかりません。私はしばらくの間、バケットとサブ集計という用語をいじっていましたが、役に立ちませんでした。
どんな助けでも感謝します。
アップデート
次に例を示します。
インデックスに次のレコードがあるとします。
[
{
"_index": "my_index",
"_type": "trip",
"_id": "9034",
"_score": 1,
"_source": {
"user_id": 11019,
"destination": "Paris",
"departure_date": "2015-01-09",
"return_date": "2015-02-10",
},
{
"_index": "my_index",
"_type": "trip",
"_id": "9035",
"_score": 1,
"_source": {
"user_id": 11019,
"destination": "Madrid",
"departure_date": "2013-11-22",
"return_date": "2013-11-29",
},
{
"_index": "my_index",
"_type": "trip",
"_id": "9036",
"_score": 1,
"_source": {
"user_id": 11020,
"destination": "Boston",
"departure_date": "2013-09-01",
"return_date": "2013-10-15",
},
{
"_index": "my_index",
"_type": "trip",
"_id": "9037",
"_score": 1,
"_source": {
"user_id": 11021,
"destination": "London",
"departure_date": "2014-02-07",
"return_date": "2014-03-10",
}
]
私のクエリは次のようなものを返します:
amount of trips | people
---------------------------
1| 2
2| 1
2 つの旅行 (ID 11019) を持つ 1 人のユーザーと、1 つの旅行 (ID 11020 および 11021) を持つ 2 人のユーザーがいるからです。