2017-05-10 14 views
0

すべてのフィールドに次のテンプレートを適用します。 現在、このマッピングは「名前」フィールドにのみ適用されています。私は効率的な方法でこれを行うことができますどのように "resedential_address"、 "work_address"、 "birth_place"、 "DOB" など複数のフィールドのelasticsearchでのマッピング

はEXAも、私はいくつかのより多くのフィールドを持っているとしましょう。私はすべてのフィールドで同じブロックを繰り返すことができることを知っています。 また、すべての「テキスト」フィールドに次のテンプレートを適用できる方法はありますか?

{ 
     "template": "*", 
     "settings": { 
     "analysis": { 
     "filter": { 
       "ngram_filter": { 
        "type": "ngram", 
        "min_gram": 1, 
        "max_gram": 25 
       } 
      }, 
     "analyzer": { 
      "case_insensitive": { 
       "tokenizer": "whitespace", 
       "filter": [ 
        "ngram_filter","lowercase" 
       ]  
      }, 
      "search_analyzer":{ 
        "type": "custom", 
        "tokenizer": "whitespace", 
        "filter": "lowercase" 
       } 
     } 
     } 
    }, 
    "mappings": { 
     "my_type": { 
     "properties": { 
      "name": { 
       "type": "string", 
       "analyzer": "case_insensitive", 
       "search_analyzer": "search_analyzer" 
      } 
     } 
     } 
    } 
} 

ありがとうございます!

答えて

1

下図のようにあなたがしてdynamic templates機能を使用してカスタムマッピングを持つすべてのtextフィールドをマップする場合:name, residential_address, work_address ...

+0

おかげのように、すべての文字列フィールドに同じカスタムマッピングを作成するテンプレートの上

{ "template": "*", "settings": { "analysis": { "filter": { "ngram_filter": { "type": "ngram", "min_gram": 1, "max_gram": 25 } }, "analyzer": { "case_insensitive": { "tokenizer": "whitespace", "filter": [ "ngram_filter","lowercase" ] }, "search_analyzer":{ "type": "custom", "tokenizer": "whitespace", "filter": "lowercase" } } } }, "mappings": { "my_type": { "dynamic_templates": [ { "strings": { "match_mapping_type": "string", "mapping": { "type": "string", "analyzer": "case_insensitive", "search_analyzer": "search_analyzer" } } } ] } } } 

@非常に迅速な応答のavr! – SSG

+0

@SSG:問題が解決された場合に備えて、回答を受け入れてください。 – Richa

関連する問題