2016-10-04 9 views
0

私はESの初心者です。私の最初のESプロジェクトは複雑です。だから来て、助けを求めることを聞く。複雑な型指定スキーマでのElastic Searchのインデックス作成/マッピング

私たちは、さまざまな種類の製品が私たちが気にするさまざまな属性を持っている、幅広い製品の多様性を持っています。たとえば、スマートフォンの場合、RAM、CPUなどを気にします。書籍については、作成者、バージョンなどを気にします。 これらをすべて1つのデータストアに入れるために、ストレージスキーマは次のようになります。

のProductId:INT、attribute_keyに、ATTRIBUTE_NAME:文字列、ATTRIBUTE_VALUE:文字列

だからスマートフォンと本のために、レコードはのようになります。今のところ

phoneId, 3, "CPU Speed", "2GHz" 
phoneId, 4, "RAM", "2GB" 
bookId, 83, "Author", "Mark Twin" 
bookId, 95, "Published", "1935" 

私はそれだ約50属性名を、持っていますたくさんありません。私はそれらすべてをインデックスにしたい。 ESの通常の索引付け/マッピング・メカニズムとは異なり、索引付けする「列」を直接割り当てることができます。この種のスキーマでは、可能なすべての属性名に対してインデックスを作成するようESに指示する必要がありますか?私は約50個しか持っていないので?

たとえば、RAM、Author、Publishedに対してインデックスを作成したいとします。マルチフィールドのインデックス作成のように見えますが、これについての経験はありません。どんな助けもありがとうございます。

ありがとう、

+0

elastic-searchのどのバージョンをお使いになりますか? –

+0

こちらをご覧くださいhttp://stackoverflow.com/a/13627218/1849366 –

+0

弾性検索のバージョンは2.1.2です。 –

答えて

0

以下のマッピングを使用してください。これは、RAM、Author、Publishedのみを索引付けします。

"person" : { 
    "properties" : { 
     "CPU_Speed" : { 
      "type" : "string", 
      "include_in_all" : false 
     }, 
     "RAM" : { 
      "type" : "string" 
     }, 
     "Author" : { 
      "type" : "string" 
     }, 
     "Published" : { 
      "type" : "string" 
     } 
    } 
} 
+0

ありがとうVinod、私はすべての40の属性名を追加する必要があるように見え、それは将来の属性名を守るものではありません。 2つのフィールドを組み合わせて考えるとより合理的です。しかし、まだそれを行う方法を知らない... –

+0

@シシェン私はあなたのコメントを取得していない "2つのフィールドを組み合わせたインデックスについて考えて、より意味をなさない"。あなたはそれを簡単に説明できますか? –

関連する問題