2017-03-16 9 views
0

私の弾性検索インデックスには次のような種類のエントリーがあります。集計elasticsearch 5

{ 
    "_index": "employees", 
    "_type": "employee", 
    "_id": "10000", 
    "_score": 1.3640093, 
    "_source": { 
    "itms": { 
     "depc": [ 
     "IT", 
     "MGT", 
     "FIN" 
     ], 
     "dep": [ 
     { 
      "depn": "Information Technology", 
      "depc": "IT" 
     }, 
     { 
      "depn": "Management", 
      "depc": "MGT" 
     }, 
     { 
      "depn": "Finance", 
      "depc": "FIN" 
     }, 
     { 
      "depn": "Finance", 
      "depc": "FIN" 
     } 
     ] 
    } 
    } 
} 

ここでは、部門コード(depc)と部門名(depn)を含むユニークな部門リストを取得しようとしています。

私は次のように試していましたが、期待した結果が得られません。

{ 
    "size": 0, 
    "query": {}, 
    "aggs": { 
    "departments": { 
     "terms": { 
     "field": "itms.dep.depc", 
     "size": 10000, 
     "order": { 
      "_term": "asc" 
     } 
     }, 
     "aggs": { 
     "department": { 
      "terms": { 
      "field": "itms.dep.depn", 
      "size": 10 
      } 
     } 
     } 
    } 
    } 
} 

ご了承ください。あなたのAGGクエリから、あなたが

+0

ネストされた集合ポストへのマッピングの更新をそれを変換する必要がありますことを可能にDEPCは、複数のDEPNまたはその逆を持っているためですか? – Rahul

+0

できません – Rose18

答えて

1

おかげで、それはitms.depためのマッピングタイプのように思える対象としませnested

あるLuceneには、内側のオブジェクトの概念がないので、Elasticsearchはへ オブジェクト階層をフラット化フィールド名と値の単純なリスト。あなたが変更する必要が

  1. :あなたはこれを修正するにはdepcdepn

    間の関連性を失っている。すなわち

    { 
        "depc" :  ["IT","MGT","FIN"], 
        "dep.depc" : [ "IT","MGT","FIN"], 
        "dep.depn" : [ "Information Technology", "Management", "Finance" ] 
    } 
    

    :、あなたのドキュメントは、内部的に変換している

    したがって

入れ子にするオブジェクトタイプ

  • 01を使用
  • 既存のAGGクエリの構造は、私には罰金だが、あなたは

    関連する問題