elasticsearch入门 (三 ik 分词器安装)

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

readme 包含各个版本ik对应的 es 版本

下载对应的ikzip包 命令如下

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

解压后 执行maven打包命令(默认系统已经安装maven)

mvn package

编译成功后进入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 下

根据git上给的样例,需要修改es.yml 配置文件,并在最后一行设置默认分词器为ik
但是本人在配置过程中一直没有生效,每次配置都会出现
IndexCreationException[failed to create index]; nested: IllegalArgumentException[Unknown Analyzer type [org.elasticsearch.index.analysis.I
kAnalyzerProvider] for [ik]];
错误

最后本人删掉了该配置改为在代码中设置mapping 的方式设置分词,网上关于如何设置mapping代码也比较少,
故在此将代码贴出,client部分代码自行设置mapping代码如下:

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();
    }

 

posted @ 2016-05-04 20:28  jiang nan  阅读(2876)  评论(0编辑  收藏  举报