• 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();
        }
  • 相关阅读:
    python使用win32api截图并回收资源
    tesseract-ocr的安装及使用
    python识别图片文字
    Python中CreateCompatibleDC和CreateBitmap造成的内存泄漏
    Python调用windows API实现屏幕截图
    turtle库常用函数
    Python3.6安装turtle模块
    Python中的截屏模块 pyscreenshot
    Python实现屏幕截图的两种方式
    观察者模式(Observer Pattern)
  • 原文地址:https://www.cnblogs.com/icoding/p/5459675.html
Copyright © 2020-2023  润新知