2016-03-26 17 views
1

を登録する私は、フルテキスト検索のための私のアプリケーションでElasticSearchを使用しようとしていると、この時点で私が使用autocomplete analyserしようとしている:私のアプリケーションを用いて構築されたとして春・データ・elasticsearch - カスタム・アナライザ

{ 
    "settings": { 
     "number_of_shards": 1, 
     "analysis": { 
      "filter": { 
       "autocomplete_filter": { 
        "type": "edge_ngram", 
        "min_gram": 1, 
        "max_gram": 20 
       } 
      }, 
      "analyzer": { 
       "autocomplete": { 
        "type": "custom", 
        "tokenizer": "standard", 
        "filter": [ 
         "lowercase", 
         "autocomplete_filter" 
        ] 
       } 
      } 
     } 
    } 
} 

を春は、私はこの方法を使用する春データelasticsearchを決めたし、私のエンティティをマッピングしました:

@Document(indexName = "estabelecimento") 
@Setting(settingPath = "/elasticsearch/autocomplete-analyser.json") 
public class ESEstabelecimento { 

    private Long id; 
    @Field(type = FieldType.String, indexAnalyzer = "autocomplete") 
    private String nome; 
    private String razaoSocial; 
    private String tipoEstabelecimento; 
    @Field(type = FieldType.Object) 
    private ESCidade cidade; 
} 

はしかし、elasticsearchは、カスタム・アナライザをロードしていません。

[DEBUG] org.elasticsearch.action.admin.indices.mapping.put - [Magus]がインデックス[[estabelecimento]]にマッピングを配置できませんでした。[esestabelecimento] org.elasticsearch.index.mapper.MapperParsingException:フィールド[nome]のアナライザー[オートコンプリート]が見つかりません org.elasticsearch.index.mapper.core.TypeParsers.parseField(TypeParsers.java:220)〜[elasticsearch-1.5.2.jar:na] at org.elasticsearch .index.mapper.core.StringFieldMapper $ TypeParser.parse(StringFieldMapper.java:153)〜[elasticsearch-1.5.2.jar:na] at org.elasticsearch.index.mapper.object.ObjectMapper $ TypeParser.parseProperties(ObjectMapper .java:290)〜[elasticsearch-1.5.2.jar:na] 、org.elasticsearch.index.mapper.object.ObjectMapper $ TypeParser.parseObjectOrDocumentTypeProperties(ObjectMapper.java:214)〜[elasticsearch -1.5.2.jar:na] at org.elasticsearch.index.mapper.object.RootObjectMapper $ TypeParser.parse(RootObjectMapper.java:136)〜[elasticsearch-1.5.2.jar:na] at org.elasticsearch .index.mapper.DocumentMapperParser.parse(DocumentMapperParser.java:211)〜[elasticsearch-1.5.2.jar:na] at org.elasticsearch.index.mapper.DocumentMapperParser.parseCompressed(DocumentMapperParser.java:192)〜[elasticsearch -1.5.2.jar:na] at org.elasticsearch.index.mapper.MapperService.parse(MapperService.java:434)〜[elasticsearch-1.5.2.jar:na] at org.elasticsearch.cluster.metadata .MetaDataMappingService $ 4.execute(MetaDataMappingService.java:505)〜[elasticsearch-1.5.2.jar:na] (org.elasticsearch.cluster.service.InternalClusterService)$ UpdateTask.run(InternalClusterService.java:365)〜[elasticsearch- 1.5.2.jar:na]org.elasticsearch.common.util.concurrent.PrioritizedEsThreadPoolExecutor $ TieBreakingPrioritizedRunnableで :org.elasticsearch.common.util.concurrent.PrioritizedEsThreadPoolExecutor $ TieBreakingPrioritizedRunnable.runAndClean(PrioritizedEsThreadPoolExecutor.java:188)[NA elasticsearch-1.5.2.jar]で.run(PrioritizedEsThreadPoolExecutor.java:158)[elasticsearch-1.5.2.jar:na] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)[na:1.8.0_77] at java.util .concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:617)[na:1.8.0_77] java.lang.Thread.run(Thread.java:745)[na:1.8.0_77] [エラー] org .springframework.data.elasticsearch.repository.support.AbstractElasticsearchRepository - elasticsearchノードのロードに失敗しました:org.elasticsearch.index.mapper.MapperParsingException:Analyzer [a utocomplete]フィールド[ノーム]

私は、問題の原因を特定することはできませんが見つかりません、私はアナライザが無効であるかどうかを知りませんかさえelasticsearchオートコンプリート-analyser.jsonファイルを見つけました。これをどうすれば解決できますか?

+1

試用の間にインデックスを削除しましたか?インデックスがまだ作成されていない場合にのみ作成されます。インデックスが既に存在する場合は、設定を更新しません。最初に索引を削除し、春にそれを再作成させます。また、GET/estabelecimento/_settingsを使用して設定をチェックすることもできます。多分それはいくつかの洞察を与えます。 –

答えて

1

私が発見したいくつかの研究の後この宣言によって問題が発生しました:

@Bean 
public ElasticsearchOperations elasticsearchTemplate(Client client) { 
    return new ElasticsearchTemplate(client, new CustomEntityMapper()); 
} 

この宣言が削除され、設定が開始されました。

2

jsonファイルからフィールド"settings":を削除し、内容のみを入れる必要があると思います。代わりに使用したの

{ 
"settings": { 
    .... 
    } 
} 

を単に使用します。

{ 
"index": { 
"number_of_shards": 1, 
"analysis": { 
    "filter": { 
    "autocomplete_filter": { 
     "type": "edge_ngram", 
     "min_gram": 1, 
     "max_gram": 20 
    } 
    }, 
    "analyzer": { 
    "autocomplete": { 
     "type": "custom", 
     "tokenizer": "standard", 
     "filter": [ 
     "lowercase", 
     "autocomplete_filter" 
     ] 
    } 
    } 
    } 
    } 
} 

はそれがあなたのお役に立てば幸いです。..解決

+0

これを試しましたが、うまくいきませんでした... – brevleq

+0

最新の編集済みのjsonを試してください。 – Richa

+0

同じ結果... @Settingをデバッグする方法はありますか?私は問題がそこにあるかもしれないと思う... – brevleq

関連する問題