2016-05-18 7 views
0

ElasticSearchで生のネストされた集約を作成したいと思いますが、それを機能させることができます。私が何をしたいか未処理のネストされた集約

{ 
    "_index": "items", 
    "_type": "frame_spec", 
    "_id": "19770602001", 
    "_score": 1, 
    "_source": { 
     "item_type_name": "frame_spec", 
     "status": "published", 
     "creation_date": "2016-02-18T11:19:15Z", 
     "last_change_date": "2016-02-18T11:19:15Z", 
     "publishing_date": "2016-02-18T11:19:15Z", 
     "attributes": [ 
     { 
      "brand": "Sun" 
     }, 
     { 
      "model": "Sunglasses1" 
     }, 
     { 
      "eyesize": "56" 
     }, 
     { 
      "opc": "19770602001" 
     }, 
     { 
      "madein": "UNITED KINGDOM" 
     } 
     ] 
    } 
    } 

属性のいずれかに基づいて集約することである。

マイドキュメントは、次のようになり。私はいくつかのスペースが含まれているため、 "attributes.model"(たとえば)で通常の集計を行うことはできません。だから、私は "未加工"のプロパティを使用しようとしましたが、ESはそれを通常のプロパティとみなし、結果を返しません。

これは私が試したものです:

{ 
    "size": 0, 
    "aggs": { 
     "brand": { 
      "terms": { 
       "field": "attributes.brand.raw" 
      } 
     } 
    } 
} 

しかし、私は何の結果を持っていません。

この問題を解決する方法はありますか?

+0

あなたはその 'raw'フィールドを含めるためにマッピングを変更する必要があります。あなたの現在のマッピングは何ですか?つまり、 'curl -XGET localhost:9200/items'を実行するとどうなりますか? – Val

+0

こんにちは、お返事ありがとうございます。現在のマッピングは次のとおりです:http://pastebin.com/tcebxJaL問題はそれらのフィールドが固定されていないということです – theofabry

+0

これらの属性の中で用語集を実行できるようにしたいのはどれですか?それらのすべてまたはわずかなものだけ? – Val

答えて

0

すべてattributes.*文字列フィールドをキャッチし、それらすべてのサブフィールドを作成するdynamic_templateをマッピングに使用する必要があります。文字列以外の型の場合は、実際にはrawフィールドは必要ありません。あなたの現在のインデックスを削除してから、これでそれを再作成する必要があります。その後

DELETE items 

PUT items 
{ 
    "mappings": { 
    "frame_spec": { 
     "dynamic_templates": [ 
     { 
      "strings": { 
      "match_mapping_type": "string", 
      "path_match": "attributes.*", 
      "mapping": { 
       "type": "string", 
       "fields": { 
       "raw": { 
        "type": "string", 
        "index": "not_analyzed", 
        "ignore_above": 256 
       } 
       } 
      } 
      } 
     } 
     ] 
    } 
    } 
} 

、あなたはあなたがこれを実行することができるでしょうそして再移入あなたのインデックスに必要と:

POST /items/_search 
{ 
    "size": 0, 
    "aggs": { 
     "brand": { 
      "terms": { 
       "field": "attributes.brand.raw" 
      } 
     } 
    } 
} 
+0

これ以上の情報は必要ですか? – Val

関連する問題