2017-04-04 12 views
1

アプリケーションの文字列フィールドの多くは、elasticsearch 5.3で動的にマッピングする必要があります。 IDやIDSで終わるすべての新しいフィールドが等の弾性によって自動的にマッピングされ、索引付けされるべきである:動的マッピングを変更するElasticsearch 5.3

"_my_propertyId": 
{ 
    "type": "keyword" 
} 

私はこの

"mappings": { 
    "my_type": { 
     "dynamic_templates": [ 
      { 
       "id_as_keywords": { 
       "match": "*id|*Id|*Ids", 
       "match_mapping_type": "string", 
       "mapping": { 
        "type": "keyword" 
       } 
       } 
      } 
     ] 

しかし、依然として弾性のようなインデックス/タイプの動的テンプレートを定義このようなプロパティを作成します。

 "_someIds": { 
      "type": "text", 
      "fields": { 
      "keyword": { 
       "type": "keyword", 
       "ignore_above": 256 
      } 
      } 
     } 

私はこれが今の動的文字列フィールドのデフォルトのマッピングが何であるかを私が間違ってやっているか、なぜわかりません。しかし、idまたはidで終わるすべてのプロパティをキーワードとして、ignore_aboveと完全にインデックスを付けずに動的にマップできるようにする必要があるので、searchAPIを使用してそれらを検索できます。アイデア?なぜこれがデフォルトの文字列マッピングになっているのですか(私はキーワード/テキストの導入については理解していますが、まだ理解しています)。

更新

は、これらのデフォルト設定には良い記事を見つけた:

Strings

答えて

1

あなたはmatchパラメータの詳細な制御を持っているmatch_patternパラメータを使用することができます。あなたはmatch_patternhereについての詳細を読むことができます

"dynamic_templates": [ 
      { 
      "id_as_keywords": { 
       "match_mapping_type": "string", 
       "match_pattern": "regex", 
       "match": ".*(id|Id|Ids)", 
       "mapping": { 
       "type": "keyword" 
       } 
      } 
      } 
     ] 

:以下の更新された動的テンプレートを検索します。

+0

偉大な応答。私はそれを試してみましょう。 – arturobelano

+0

完璧に作業しました!ありがとう! – arturobelano

関連する問題