2017-06-18 5 views
0

用語集を実行し、すべての結果バケットでスクリプト操作が実行された後にヒットフィールドを取得したい。elasticsearch:トップヒット集計フィールド上のスクリプトを実行

例えば、これらは文書である場合、:

{"age": 15, "firstName": "Dana", "lastName": "Miller"} 
{"age": 15, "firstName": "Michelle", "lastName": "Bob"} 
{"age": 32, "firstName": "Mary", "lastName": "Smith"} 
{"age": 32, "firstName": "Anna", "lastName": "Taylor"} 

集約は、 "年齢" フィールドであり、かつスクリプトは次のとおりです。 「リターン 'DOC [' firstNameの '] +' '+ドキュメント[ 'lastNameの'] "

結果は次のようになります。

バケット1(年齢:15):

  • " ダナ・ミル「
  • "ミシェル・ボブ"

Buchet 2(32歳)ER:

  • メアリー・スミス
  • アンナ・テイラー

これはelasticsearchで可能ですか?

EDIT:また

、私はバケツに複数のヒットの上にスクリプトを実行する方法を探しています。 たとえば、上記の文書と期間フィールドによる集計という用語を使用すると、バケット内のヒットの結果を次のように一緒に取得できますか?

バケツ1(15歳):

  • "ダナ・ミラーとミシェル・ボブ"

のbucket2(32歳):

  • "メリー・スミスとアンナ・テイラー"

ESで可能ですか?

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

答えて

0

私は次のクエリがお手伝いすると思います。

{ 
"size": 0, 
"aggs": { 
    "group By age": { 
    "terms": { 
     "field": "age" 
    }, 
    "aggs": { 
     "top hits": { 
      "top_hits": { 
       "script_fields": { 
       "Name": { 
        "script": "doc['firstName'].value + ' ' + doc['lastName'].value " 
        } 
       } 
       } 
      } 
     } 
     } 
    } 
    } 

+0

ありがとうございます。複数のバケットにまたがってスクリプトを実行できますか? – Shani

+0

私はあなたを得ませんでしたか?あなたは何を達成したいのですか? – Richa

+0

あなたの答えが助けになりました。また、上記の質問に複数のバケットの結果にスクリプトを実行するという質問を追加しました。たとえば、バケット1の場合、「Dana Miller and Michelle Bob」という結果が得られます。 – Shani

関連する問題