2017-01-10 12 views
1

私はES内のデータを持っている:Elasticsearch - このようになります集約とバケットサイズ

'{"Emp_ID":"12212","Emp_Name":"Jim","Emp_Sal":300,"Dep_Id":22,"Dep_Name":"IT","Dep_Cnt":40}'  
'{"Emp_ID":"6874590","Emp_Name":"Joe","Emp_Sal":140,"Dep_Id":66,"Dep_Name":"Admin","Dep_Cnt":20}' 
'{"Emp_ID":"32135","Emp_Name":"Jill","Emp_Sal":170,"Dep_Id":66,"Dep_Name":"Admin","Dep_Cnt":20}' 
'{"Emp_ID":"43312","Emp_Name":"Andy","Emp_Sal":450,"Dep_Id":22,"Dep_Name":"IT","Dep_Cnt":40}'  
'{"Emp_ID":"315609","Emp_Name":"Cody","Emp_Sal":150,"Dep_Id":22,"Dep_Name":"IT","Dep_Cnt":40}' 
'{"Emp_ID":"87346","Emp_Name":"Dave","Emp_Sal":500,"Dep_Id":55,"Dep_Name":"hr","Dep_Cnt":10}'  

私は次のクエリを書いているDep_Cnt別に並べられたユニークな部門を、取得したい

{ 
    "size":0, 
    "aggs":{ 
     "by_Dep_Cnt":{ 
     "terms":{ 
      "field":"Dep_Cnt", 
      "order":{ 
       "_term":"asc" 
      } 
     }, 
     "aggs":{ 
      "by_unique_dep_id":{ 
       "terms":{ 
        "field":"Dep_Id" 
       }, 
       "aggs":{ 
        "tops":{ 
        "top_hits":{ 
         "size":1 
        } 
        } 
       } 
      } 
     } 
     } 
    } 
} 

そしてDep_Cntによって注文された3つのユニークな部門の期待される出力を得ました。 しかし、私の要件は上位2つの部門のみを取得することです。 2つのバケットだけを取得するようにクエリを変更するにはどうすればよいですか?

答えて

0

何を探してるんですがterms凝集のパラメータsizeです:

あなたの部門の従業員の数とドキュメントは従業員一人当たりであり、あなたがあなたのすべての従業員を持っているDep_Cnt場合あなたができるのはあなたのマッピングからのインデックスです。

{ 
    "size":0, 
    "aggs":{ 
     "by_Dep_Id":{ 
     "terms":{ 
      "field":"Dep_Id", 
      "size": 2 
     } 
    } 
} 

デフォルトでは、対応する値のドキュメントこのDep_Idを有する文書の数、すなわちこの部門の従業員の数。

あなたはこのような状況になっていない場合:

あなたは同じサイズで2つの部門を持っているときあなたの現在の要求が同じように動作しません(あなたが同じバケツに2 Dep_Id秒を持っていますDep_Cnt

あなたはDep_Idによるグループ文書、あなたがしたいメトリック(最小、最大、平均、...)を使用してDep_Cntを取得することができ、ソートこのメトリック上:

{ 
    "size":0, 
    "aggs":{ 
     "by_Dep_Id":{ 
     "terms":{ 
      "field":"Dep_Id", 
      "size": 2 
      "order":{ 
       "avg_Dep_Cnt":"asc" 
      } 
     }, 
     "aggs":{ 
      "avg_Dep_Cnt":{ 
       "avg":{ 
        "field":"Dep_Cnt" 
       } 
      } 
     } 
     } 
    } 
} 

NB:top_hits集計は、集計に追加するだけの追加の要件がある場合は、説明したとおりに必要ないので削除しました。

関連する問題