elasticsearch入門 (三 ik 分詞器安裝)

ik git 地址 https://github.com/medcl/elasticsearch-analysis-ikjava

readme 包含各個版本ik對應的 es 版本git

下載對應的ikzip包 命令以下github

https://github.com/medcl/elasticsearch-analysis-ik/archive/v1.5.0.zipjson

解壓後 執行maven打包命令(默認系統已經安裝maven)app

mvn packageelasticsearch

編譯成功後進入target下
有一個編譯好的elasticsearch-analysis-ik-1.5.0.jar 將此包 copy 到 es 的lib 下
有一個release包 包中有一個 elasticsearch-analysis-ik-1.5.0.zip zip 將此zip 解壓到 es/plugins/ik 下
另外
elasticsearch-analysis-ik 包下有一個config文件夾將此文件夾內的內容copy到 es/config/ik 下 maven

根據git上給的樣例,須要修改es.yml 配置文件,並在最後一行設置默認分詞器爲ik
可是本人在配置過程當中一直沒有生效,每次配置都會出現
IndexCreationException[failed to create index]; nested: IllegalArgumentException[Unknown Analyzer type [org.elasticsearch.index.analysis.I
kAnalyzerProvider] for [ik]];
錯誤ide

最後本人刪掉了該配置改成在代碼中設置mapping 的方式設置分詞,網上關於如何設置mapping代碼也比較少,
故在此將代碼貼出,client部分代碼自行設置mapping代碼以下:ui

Client client = ElasticClient.getInstance().getClient();
    @Test
    public void testMapping() throws IOException {
        client.admin().indices().prepareCreate("opac").execute().actionGet();
        XContentBuilder mapping = jsonBuilder()
                .startObject()
                    .startObject("title")
                        .startObject("properties")
                            .startObject("recCtrlId").field("type", "string").field("store","yes").field("index", "not_analyzed").endObject()
                            .startObject("titleAbs").field("type", "string").field("store", "yes").field("analyzer","ik").endObject()
                            .startObject("title").field("type", "string").field("store", "yes").field("analyzer","ik").endObject()
                            .startObject("authors").field("type", "string").field("index", "analyzed").endObject()
                            .startObject("publisher").field("type", "string").field("index", "analyzed").endObject()
                            .startObject("pubdateDate").field("type", "date").endObject()
                        .endObject()
                    .endObject()
                .endObject();
        PutMappingRequest mappingRequest = Requests.putMappingRequest("opac").type("title").source(mapping);
        client.admin().indices().putMapping(mappingRequest).actionGet();
    }
相關文章
相關標籤/搜索