2

実際には私の質問はとてもシンプルです:ハッシュマップの値not_analyzedが必要です!Spring Elasticsearch HashMap [String、String]マッピング値をnot_analyzedにすることはできません

今、私は1つの目的は、ハッシュマップ[文字列、文字列]を含んでいるように見えるがあります後、その後

{ 
    "id": { 
     "type": "string" 
    }, 
    "parameters": { 
     "type": "object" 
    } 
} 

:begginingでこのようなマッピングを生成elasticsearchそして春データを

class SomeObject{ 
    String id; 
    @Field(type=FieldType.Object, index=FieldIndex.not_analyzed) 
    Map<String, String> parameters; 
} 

いくつかのオブジェクトを追加すると、次のような属性が追加されます。

{ 
    "id": { 
     "type": "string" 
    }, 
    "parameters": { 
     "properties": { 
      "shiduan": { 
       "type": "string" 
      }, 
      "季节": { 
       "type": "string" 
      } 
     } 
    } 
} 

私は中国の価値を検索することはできません、私はこの時点で英語を検索することができました。

THEN、READ THIS POST https://stackoverflow.com/a/32044370/4148034後、私はこれを手動でマッピングを更新しては:

{ 
    "id": { 
     "type": "string" 
    }, 
    "parameters": { 
     "properties": { 
      "shiduan": { 
       "type": "string", 
       "index": "not_analyzed" 
      }, 
      "季节": { 
       "type": "string", 
       "index": "not_analyzed" 
      } 
     } 
    } 
} 

私は今CHINESEを検索することができますので、私はPOSTが言ったように、問題が、 "not_analyzed" であることを知っています。

最後に、誰かがマップ値を "not_analyzed"にする方法を教えてくれます。私はgoogleとstackoverflowを何度も持っていますが、まだ答えが見つからないので、助けてくれれば教えてください。これを達成するための

答えて

5

一つの方法は、ビルド・パス(例えばyourproject/src/main/resources/mappings)にmappings.jsonファイルを作成し、自分のクラスで@Mappingのアノテーションを使用して、そのマッピングを参照することです。そのマッピングファイルで

@Document(indexName = "your_index", type = "your_type") 
@Mapping(mappingPath = "/mappings/mappings.json") 
public class SomeObject{ 
    String id; 
    @Field(type=FieldType.Object, index=FieldIndex.not_analyzed) 
    Map<String, String> parameters; 
} 

、我々はあなたのparametersハッシュマップのサブフィールドを対象とnot_analyzed文字列であることを宣言しますdynamic templateを追加するつもりです。

{ 
    "mappings": { 
    "your_type": { 
     "dynamic_templates": [ 
     { 
      "strings": { 
      "match_mapping_type": "string", 
      "path_match": "parameters.*", 
      "mapping": { 
       "type": "string", 
       "index": "not_analyzed" 
      } 
      } 
     } 
     ] 
    } 
    } 
} 

最初your_indexを削除し、それが適切なマッピングを再作成できるようにアプリケーションを再起動することを確認する必要があります。

+0

申し訳ありませんが時間通りにあなたの答えを受け入れるために、それは動作します。あなたの助けをもう一度ありがとう –

関連する問題