2016-11-29 9 views
0

ここには私のインデックスPublicationsLikesのマッピングです:Elasticsearchで結果を集計するときに他のフィールドを返すことはできますか?

  • ID:文字列
  • アカウント:文字列
  • API:文字列
  • 日:日

私は現在作ってるんですES上での集計。ここでは、結果の数を(出版物の)IDでグループ化します。

{ 
    "key": "<publicationId-1>", 
    "doc_count": 25 
}, 
{ 
    "key": "<publicationId-2>", 
    "doc_count": 387 
}, 
{ 
    "key": "<publicationId-3>", 
    "doc_count": 7831 
} 

返される「キー」(id)は情報ですが、アカウントやAPIのようなパブリケーションの別のフィールドも選択する必要があります。そのようなビット:

{ 
    "key": "<publicationId-1>", 
    "api": "Facebook", 
    "accountId": "65465z4fe6ezf456ezdf", 
    "doc_count": 25 
}, 
{ 
    "key": "<publicationId-2>", 
    "api": "Twitter", 
    "accountId": "afaez5f4eaz", 
    "doc_count": 387 
} 

これはどうすれば管理できますか?

ありがとうございました。

答えて

1

を見つけることthe linkを確認することができます各バケットのドキュメントを並べ替えて最初のものを選択し、返すフィールドを制御することもできます。

{ 
    "size": 0, 
    "aggs": { 
    "publications": { 
     "terms": { 
     "field": "id" 
     }, 
     "aggs": { 
     "sample": { 
      "top_hits": { 
      "size": 1, 
      "_source": ["api","accountId"] 
      } 
     } 
     } 
    } 
    } 
} 
0

これにサブ集計を使用できます。

GET /PublicationsLikes/_search 
{ 
"aggs" : { 
    "ids": { 
    "terms": { 
    "field": "id" 
    }, 
    "aggs": { 
    "accounts": { 
    "terms": { 
     "field": "account", 
     "size": 1 
    } 
    } 
    } 
    } 
} 
} 

あなたの結果はあなたが望んでいない、まさにますが、それは少し似ています:

{ 
    "key": "<publicationId-1>", 
    "doc_count": 25, 
    "accounts": { 
     "buckets": [ 
     { 
      "key": "<account-1>", 
      "doc_count": 25 
     } 
     ] 
    } 
}, 
{ 
    "key": "<publicationId-2>", 
    "doc_count": 387, 
    "accounts": { 
     "buckets": [ 
     { 
      "key": "<account-2>", 
      "doc_count": 387 
     } 
     ] 
    } 
}, 
{ 
    "key": "<publicationId-3>", 
    "doc_count": 7831, 
    "accounts": { 
     "buckets": [ 
     { 
      "key": "<account-3>", 
      "doc_count": 7831 
     } 
     ] 
    } 
} 

ます。また、この要件はtop_hitsで最高の達成されたより多くの情報

0

お返事ありがとうございます。私は最初の解決策が最も美しいと思っています(リクエストに関しても結果を取得する)が、どちらもサブ集約クエリーのようです。

{ "size": 0, "aggs": { "publications": { "terms": { "size": 0, "field": "publicationId" }, "aggs": { "sample": { "top_hits": { "size": 1, "_source": ["accountId", "api"] } } } } } }

は、私はJavaのAPIで動作するので、私が代わりに0

Thnaksたくさんの人たちのINT.Maxを置くことを決めた、私はサイズ= 0のパラメータに注意しなければならないと思いますので、 。

関連する問題