2017-03-10 19 views
0

の作成中にパスシノニムは私弾性検索設定のドキュメントを1として弾性検索 - 私は弾性検索で</p>以下 <p>をシノニム機能を使用しようとしていますインデックス

<elasticsearch:node-client id="client" local="true"/> 

    <bean name="elasticsearchTemplate" class="org.springframework.data.elasticsearch.core.ElasticsearchTemplate"> 
     <constructor-arg name="client" ref="client"/> 
    </bean> 

あり、配置するように言及されていますElastic Searchのconfigディレクトリに関連するシノニムファイル

私の場合は、索引を作成するときにシノニムのテキストをプログラマチックに渡したいと考えています。ユーザーは、類義語ファイルにエントリを追加するオプションがありますし、アプリケーションがインデックスを更新してインデックスを作成するとき再度更新同義語ファイル

を使用してデータを分析します、設定

elasticSearchTemplate.createIndex(MyClass.class , Map settings) 
に合格するオプションがあります

例:elasticsearchTemplate.createIndex(Entity.class, "max_result_window = 15000");

しかし、同義語の設定はAnalyzerモジュール内にあります。私が見つけた最も近いソリューションは以下であるインデックス

答えて

0

を作成しながら、これは設定として渡すことができる場合

は親切に戻します。以下は

@Document(indexName = "myindex", type = "mytype") 
@Setting(settingPath = "/mysetting/mysetting.json") 
public class Employee implements Serializable { 

    @Id 
    private String employeeId; 

    @Field(type = FieldType.String, analyzer = "synonym_analyzer") 
    private String transformedTitle ; 

mysetting.json

{ 
    "index": { 
    "number_of_shards": "1", 
    "number_of_replicas": "0", 
    "analysis": { 
     "analyzer": { 
     "synonym_analyzer": { 
      "tokenizer": "whitespace", 
      "filter": [ 
      "synonym_filter" 
      ] 
     } 
     }, 
     "filter": { 
     "synonym_filter": { 
      "type": "synonym", 
      "synonyms": [ 
      "english,british", 
      ], 
      "ignore_case": "true" 
     } 
     } 
    } 
    } 
} 
です