2017-04-03 4 views
0

私はElasticSearchを初めて使用しました。v5.1.2で、ネストしたフィールドの値をすべて取得しようとしました(例:firstname)。マイデータ:ElasticSearch:ネストされたフィールドのすべての値を取得する

PUT my_index/my_type/1 
{ 
    "group" : "fans", 
    "user" : [ 
    { 
     "firstname" : "John", 
     "lastname" : "Smith" 
    }, 
    { 
     "firstname" : "Alice", 
     "lastname" : "White" 
    }, 
    { 
     "lastname": "Muller" 
    } 
    ] 
} 

そして、私は私のクエリの結果は、最初の名前「ジョン」と「アリス」になりたいです。 私はいくつかの集約クエリを試してみました:

GET my_index/my_type/_search 
{ 
    "size":0, 
    "aggs": { 
    "myagg": { 
     "terms": { 
     "field": "user.firstname" 
     } 
    } 
    } 
} 

しかし成功しませんでした。このようなクエリを作成するにはどうすればよいですか?

答えて

1

あなたはまず、あなたが以下のようなnested aggregationsを使用することができ、マッピングを宣言した後nestedフィールド

PUT my_index3 
{ 
    "mappings": { 
    "my_type": { 
     "properties": { 
     "user": { 
      "type": "nested", 
      "properties": { 
      "firstname":{ 
       "type":"keyword" 
      } 
      } 
     } 
     } 
    } 
    } 
} 


PUT my_index3/my_type/1 
{ 
    "group" : "fans", 
    "user" : [ 
    { 
     "firstname" : "John", 
     "lastname" : "Smith" 
    }, 
    { 
     "firstname" : "Alice", 
     "lastname" : "White" 
    }, 
    { 
     "lastname": "Muller" 
    } 
    ] 
} 

としてユーザーを使用してインデックスのmappingsを宣言しなければなりません。

POST my_index3/_search 
{ 
    "size": 0, 
    "aggs": { 
    "nested_user": { 
     "nested": { 
     "path": "user" 
     }, 
     "aggs": { 
     "firstname": { 
      "terms": { 
      "field": "user.firstname", 
      "size": 10 
      } 
     } 
     } 
    } 
    } 
} 

希望、これはこれはそれをしない

+0

を助け、ありがとう! – user1981275

関連する問題