簡體   English   中英

MapperParsingException創建ElasticSearch索引

[英]MapperParsingException creating elasticsearch index

我正在嘗試創建以下索引和映射。

CreateIndexRequestBuilder createIndexRequestBuilder = client.admin().indices().prepareCreate("my_index");



            XContentBuilder mappingBuilder = jsonBuilder()
                    .startObject()
                        .startObject("my_type")
                            .startObject("properties")
                                .startObject("nombre")
                                    .field("analyzer", "keyword_lowercase")
                                    .field("type", "string")                                    
                                .endObject()                                
                                .startObject("codigo")
                                    .field("type", "string")
                                    .field("analyzer", "keyword_lowercase")
                                .endObject()                                
                            .endObject()
                        .endObject()
                    .endObject();

             createIndexRequestBuilder.addMapping(document.type(), mappingBuilder);


            XContentBuilder mappingSettingsBuilder = jsonBuilder()
                    .startObject()                          
                            .startObject("index")
                                .startObject("analisis")
                                    .startObject("analyzer")
                                        .startObject("keyword_lowercase")
                                            .field("type","custom")
                                            .field("tokenizer","keyword")
                                            .array("filter", "lowercase")
                                        .endObject()
                                    .endObject()
                                .endObject()
                            .endObject()                            
                    .endObject();

            createIndexRequestBuilder.setSettings(mappingSettingsBuilder);


            createIndexRequestBuilder.execute().actionGet();

但是我收到以下異常:

org.elasticsearch.index.mapper.MapperParsingException:找不到字段[codigo]的分析器[keyword_lowercase]

我想我必須以任何方式關閉/打開索引才能獲得成功,但是我不知道什么時候……我已經測試了幾件事而沒有成功。 任何想法?

首先十分感謝

我認為當我們使用create api時,無法在單獨的線程中進行映射和索引。 解決方案是同時進行:

        XContentBuilder mappingCreateBuilder = jsonBuilder()
                .startObject()
                    .startObject("mappings")
                        .startObject(document.type())
                            .startObject("properties")
                                .startObject("nombre")
                                    .field("analyzer", "keyword_lowercase")
                                    .field("type", "string")                                    
                                .endObject()                                
                                .startObject("codigo")
                                    .field("type", "string")
                                    .field("analyzer", "keyword_lowercase")
                                .endObject()                                
                            .endObject()
                        .endObject()
                    .endObject()
                    .startObject("settings")
                        .startObject("index")
                            .startObject("analisis")
                                .startObject("analyzer")
                                    .startObject("keyword_lowercase")
                                        .field("type","custom")
                                        .field("tokenizer","keyword")
                                        .array("filter", "lowercase")
                                    .endObject()
                                .endObject()
                            .endObject()
                        .endObject()
                    .endObject()
                .endObject();

        createIndexRequestBuilder = client.admin().indices().prepareCreate(document.indexName());

        createIndexRequestBuilder.setSettings(mappingCreateBuilder);
        createIndexRequestBuilder.execute().actionGet();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM