2016-05-26 1 views
0

この質問はthis questionのフォローアップです。Elasticsearch文書のフィールド合計の適切なグルーヴィースクリプト

私の文書はそうのように見える場合:例えば(、特定のパターンに一致する文書ごとに、すべてのdocumentStatsの合計を返すためscript_fieldに使用する正しいグルーヴィーなスクリプトになり何

{"documentid":1, 
"documentStats":[ {"foo_1_1":1}, {"foo_2_1":5}, {"boo_1_1":3} ] 
} 

含ま_1_

答えて

1

、新しい構造と同じことを行いワンライナーがあります:

{ 
    "query" : { 
     ... 
    }, 
    "script_fields" : { 
     "sum" : { 
      "script" : "_source.documentStats.findAll{ it.keySet()[0] =~'_1_' }.collect{it.values()}.flatten().sum()" 
     } 
    } 
} 
+0

はい、ありがとうございました! –

1

私はESを知らないが、純粋なGroovyで、あなたはどうなる:

document.documentStats.collectMany { Map entry -> 
    // assumes each entry has a single key and a single int value 
    def item = entry.entrySet()[0] 
    item.key.contains('_1_') ? [item.value] : [] 
}.sum() 

は、この情報がお役に立てば幸いです。言及質問と同様に

関連する問題