2017-09-09 10 views
0

私はSOLRからElasticsearchに移行しており、集計が正しく機能するように苦労しています。以下のため弾性は、単純な集計では0のバケットを返し、入れ子では0を返します。

GET /index/_search 
{ 
    "query": { 
    "match_all": {} 
    } 
} 

私が作りたい(:

{ 
     "id": 1, 
     "title": "some title", 
     "profile": { 
     "colour": "GREY", 
     "brand": "SOME_BRAND", 
     }, 
     "user_id": 1, 
     "created_at": "2017-09-09T13:54:30.304Z", 
     "updated_at": "2017-09-09T13:54:50.282Z", 
     "email": "[email protected]", 
} 

I できクエリ私の文書使用して:私のインデックスに

は、次のようなJSON構造に似単一の文書があり何らかの理由で)電子メールだけで集約することができます。だから私は使用:

GET /index/_search 
{ 
    "query": { 
    "match_all": {} 
    }, 
    "aggs": { 
    "emails": { 
    "terms": { 
     "field": "email" 
    } 
    } 
    } 
} 

私はSOLRでこれを行うだろう場合は、メールアドレスの[email protected]と単一の文書がある場合、私は戻ってファセットを受け取ることになります。

弾性が返されます。

{ 
    **SNIP** 
"aggregations": { 
    "emails": { 
    "doc_count_error_upper_bound": 0, 
    "sum_other_doc_count": 0, 
    "buckets": [] 
    } 
    } 
} 

私もハッシュの集計を取得したいと思います例えば

GET /index/_search 
{ 
    "query": { 
    "match_all": {} 
    }, 
    "aggs": { 
    "profile_colour": { 
    "terms": { 
     "field": "profile", 
     "scripts": { 
      "inline": "doc.profile.colour" 
     } 
    } 
    } 
    } 
} 

しかし、再びゼロ結果:[ '色']

私が試したプロファイル。私が試したすべてのものは集計されていないようです。私は

+0

あなたのマッピングが間違っていると思います。質問に追加できますか? –

答えて

1

あなたJSON文書が不正な形式で、ここ

"brand": "SOME_BRAND", 

、ここ

"email": "[email protected]le.com", 

を末尾のカンマを削除してください、すべてが、少なくともここでは(動作します..ここで非常にシンプルな何かが欠けています私はES 1.7.3上にいる)。

"aggregations": { 
    "emails": { 
     "doc_count_error_upper_bound": 0, 
     "sum_other_doc_count": 0, 
     "buckets": [ 
     { 
      "key": "example.com", 
      "doc_count": 1 
     }, 
     { 
      "key": "john", 
      "doc_count": 1 
     } 
     ] 
    } 
    } 

を、私は電子メール全体が単一のキーワードとして管理する必要があるとして、それは間違っていると思います。次の例では、私はそれらのフィールドの指定マッピングを作成していないことに注意してください。

関連する問題