2016-05-12 9 views
1

マッピングが大幅に異なるインデックスがあります。例えば、私はWikipedia infoboxのすべての他の記事のデータを索引付けしています。インフォボックス内のデータは構造化されておらず、均一でもありません。すべてのフィールドが異なっていて、私はすべてのフィールド上のアナライザを適用すると思っているため、関連するフィールドに完了フィールドを適用したいので弾性検索 - すべてのフィールドにデフォルトのアナライザーを設定する

Data1- { 
    'title': 'Sachin', 
    'Age': 41, 
    'Occupation': Cricketer 
} 

Data2- { 
    'title': 'India', 
    'Population': '23456987654', 
    'GDP': '23', 
    'NationalAnthem': 'Jan Gan Man' 
} 

- :だから、データは次の形式にすることができます。

インデックス作成時にデフォルトで各フィールドにアナライザを適用するにはどうすればよいですか?

+0

を、私は推測? –

+0

はい。文字列フィールドのみ。 'int'、' double'など他のフィールドはすべてnot_analyzedでなければなりません。 – PythonEnthusiast

答えて

0

新しいフィールドがそれに追加されるたびに、それらのstringフィールドが_default_テンプレートからのマッピングを取るようにあなたは、あなたのインデックスの_default_テンプレートが必要です:

{ 
    "template": "infobox*", 
    "mappings": { 
    "_default_": { 
     "dynamic_templates": [ 
     { 
      "string_fields": { 
      "match": "*", 
      "match_mapping_type": "string", 
      "mapping": { 
       "type": "string", 
       "index": "analyzed", 
       "analyzer": "my_completion_analyzer", 
       "fielddata": { 
       "format": "disabled" 
       }, 
       "fields": { 
       "raw": { 
        "type": "string", 
        "index": "not_analyzed", 
        "ignore_above": 256 
       } 
       } 
      } 
      } 
     } 
     ] 
    } 
    } 
} 

またはあなたのインデックスが毎日されていない場合/毎週1、あなただけ定義され_default_マッピングに一度、それを作成することができます。すべての `STRING`分野で

PUT /infobox 
{ 
    "mappings": { 
    "_default_": { 
     "dynamic_templates": [ 
     { 
      "string_fields": { 
      "match": "*", 
      "match_mapping_type": "string", 
      "mapping": { 
       "type": "string", 
       "index": "analyzed", 
       "analyzer": "my_completion_analyzer", 
       "fielddata": { 
       "format": "disabled" 
       }, 
       "fields": { 
       "raw": { 
        "type": "string", 
        "index": "not_analyzed", 
        "ignore_above": 256 
       } 
       } 
      } 
      } 
     } 
     ] 
    } 
    } 
} 
+0

ほとんどの場合、これはうまくいきましたが、別のドキュメントに 'birthYear'キーを付けてインデックスを作成しようとしたときに' mapper_parsing_exception、[birthYear]を解析できませんでした。 ' – PythonEnthusiast

+0

です。索引付けされた最初の文書のタイプ。キー/フィールドの異なる別のドキュメントのインデックスを作成すると、エラーが発生します。 – PythonEnthusiast

+0

これはなぜ正確に起こっていますか? – PythonEnthusiast

関連する問題