2016-06-24 5 views
0

さまざまな都市のelasticsearchに "cities"というタイプのドキュメントを保存し、それらの都市の降水量メトリックをどのように保存したいと考えていますか。以下は、2つのサンプル文書です:特殊なケースのためにelasticsearchでマッピングを定義する方法は?

{ 
    "name": "Seattle" 
    "rain_fall": { 
    "jan16": {"max": 1000, "min": 1000, "avg": 1200 }, 
    "feb16": {"max": 1100, "min": 1000, "avg": 1200 }, 
    "mar16": {"max": 1800, "min": 1000, "avg": 1200 } 
    } 
} 

{ 
    "name": "London" 
    "rain_fall": { 
    "jan16": {"max": 1200, "min": 1000, "avg": 1200 }, 
    "feb16": {"max": 1300, "min": 1000, "avg": 1200 }, 
    "mar16": {"max": 1400, "min": 1000, "avg": 1200 } 
    } 
} 

sampel文書上記のマッピングをcorrosponding定義する方法は?私はこれまでのところ、これを持っているために管理 -

"mappings": { 
    "_index": "myindex", 
    "cities": { 
    "dynamic": "strict", 
    "properties": { 
     "name" {"type": "string"}, 
     "rain_fall": { 
     "type": "nested", 
     "properties": { 
      ----???---- 
     } 
     } 
    } 
    } 
} 

答えて

0

あなたはそのようにそれを行う場合は、新しいオブジェクトのプロパティがなど毎月jan16feb16、月ごとに作成される必要があるとしている、あなたはするつもりです新しいプロパティを作成し、それが最も効率的な方法であるかどうかはわかりません。それはあなたが後でそのインデックスを照会する方法に依存しますが、その代わり、私はこのように、ネストされたオブジェクトの内側に新しいプロパティとして月を移動することをお勧めしたい:

{ 
    "name": "London", 
    "rain_fall": [ 
    {"month": "jan16", "max": 1200, "min": 1000, "avg": 1200 }, 
    {"month": "feb16", "max": 1300, "min": 1000, "avg": 1200 }, 
    {"month": "mar16", "max": 1400, "min": 1000, "avg": 1200 } 
    ] 
} 

マッピングは、次にようになります。

{ 
    "mappings": { 
    "cities": { 
     "dynamic": "strict", 
     "properties": { 
     "name": { 
      "type": "string" 
     }, 
     "rain_fall": { 
      "type": "nested", 
      "properties": { 
      "avg": { 
       "type": "long" 
      }, 
      "min": { 
       "type": "long" 
      }, 
      "month": { 
       "type": "string" 
      }, 
      "max": { 
       "type": "long" 
      } 
      } 
     } 
     } 
    } 
    } 
} 
+0

ありがとうございます。それも私が考えているものです。 – JVK

関連する問題