2016-10-21 15 views
0

すべてのインデックスが動的で実行時に作成され、すべてが異なるフィールド(5つの共通フィールドのみ)を持つため、ElasticSearchインデックスへのマッピングを追加できないという要件があります。 。そのため、URL用の用語フィルタ(例:http://www.domain.com/a/b)やMIMEタイプ(例:image/jpeg)の問題が発生しています。マッピングを追加せずにスラッシュやその他の特殊文字を取得する最良の方法は何ですか?Term Filter for ElasticSearchでのスラッシュなし

答えて

0

@tcarmetの答えに基づいて、これが私がテンプレートのために使い終わったものです。

{ 
    "enable_raw_string": { 
     "order": 0, 
     "template": "*", 
     "settings": {}, 
     "mappings": { 
      "_default_": { 
      "dynamic_templates": [ 
       { 
       "strings": { 
        "mapping": { 
        "type": "string", 
        "fields": { 
         "raw": { 
         "ignore_above": 256, 
         "index": "not_analyzed", 
         "type": "string" 
         } 
        } 
        }, 
        "match_mapping_type": "string" 
       } 
       } 
      ] 
      } 
     }, 
     "aliases": {} 
     } 
} 

次に、xの代わりにx.rawをフィルタリングできます。

1

あなたは、あなたのインデックスとのマッピングは、すべてのデータのための実行時に自動的に作成されます指定することができ、あなたのelasticsearchインデックスがあり

にテンプレートを追加することができます。

+0

インデックスに追加するフィールドがわからない場合はどうすればテンプレートを使用できますか?インデックスには5つの共通フィールドしかなく、残りのフィールドはすべて異なります。 – juminoz

+1

通常、テンプレートは名前を指定せずに複数のフィールドを生成できます。それらは自動的に生成することができます。 – tcarmet

+0

しかし、どのようなマッピングを使用すればよいでしょうか?フィールドが20個ある場合、分析する必要があるかどうかを判断する方法はありません。現在、私たちはElasticSearchによるデフォルトのマッピングに頼っています。ElasticSearchは、95%の時間でそれを正しく取得しています。私はあなたがリクエストでアナライザを指定することができるクエリを知っていますが、私はフィルタのために同じことをする方法を見ていませんでした。 – juminoz

関連する問題