2017-05-15 16 views
0

私は弾性検索でかなり新しいです。ElasticSearchアグリゲーションは、配列としてバケットに配列として余分なフィールドを追加します

私は、集約のすべてのバケットにカスタムフィールドを追加する方法を探しています。このフィールドは、配列や文字列でなければなりません。

私はそのような結果を有する集合体照会

{ 
    size: 0, 
    query: {...}, 
    aggs: { 
    "merchants": { 
     "terms": { 
     "field": "name", 
     "min_doc_count": 1, 
     "order": { 
      "max_score": "desc" 
     } 
     }, 
     "aggs": { 
     "max_score": { 
      "max": { 
      "script": "_score" 
      } 
     } 
     } 
    } 
    } 
} 

を有する弾性検索マッピングマッピングを

​​

を有する:例で

{ 
    "took": 2, 
    "timed_out": false, 
    "_shards": { 
     "total": 5, 
     "successful": 5, 
     "failed": 0 
    }, 
    "hits": { 
     "total": 82, 
     "max_score": 0, 
     "hits": [] 
    }, 
    "aggregations": { 
     "merchants": { 
      "doc_count_error_upper_bound": 0, 
      "sum_other_doc_count": 0, 
      "buckets": [ 
       { 
        "key": "Post Office", 
        "doc_count": 82, 
        "max_score": { 
         "value": 1.7627471685409546 
        } 
       } 
      ] 
     } 
    } 
} 

この結果は82を含んでいますdocs。 私の目標は、すべてのバケットに_idというすべてのドキュメントが含まれている余分なフィールドがあることです。[1、2、3、4、...]

答えて

0

これを達成する最も良い方法は、

{ 
    size: 0, 
    query: {...}, 
    aggs: { 
    "merchants": { 
     "terms": { 
     "field": "name", 
     "min_doc_count": 1, 
     "order": { 
      "max_score": "desc" 
     } 
     }, 
     "aggs": { 
     "ids": {    <--- add this 
      "terms": { 
      "field": "_id", 
      "size": 100 
      } 
     }, 
     "max_score": { 
      "max": { 
      "script": "_score" 
      } 
     } 
     } 
    } 
    } 
} 
+0

私は何とか「サイズ」を省略することができます::100 _idフィールド上の別のtermsサブ集計を追加するには?私は正確な値を知らないので、そこにあるはずです –

+0

あなたは任意に高い値を設定することができますが、デフォルトでは10語だけが返されます。 – Val

関連する問題