elasticsearch安装ik分词器与Springboo的t整合

  • ik分词器安装
  1. ik分词器下载地址:https://github.com/medcl/elasticsearch-analysis-ik/releases/tag/v7.4.2 由于已经将elasticsearch相关的目录影射到本地了,只需要下载解压并上传到服务器本地对应位置即可。
    image
  2. 检查ik分词器是否安装成功:
    进入容器:docker exec -it d92 /bin/bash (d92为容器id)
    进入bin目录执行:elasticsearch-plugin list 即可列出ES安装成功的插件
    image
  • 配置ik分词器
  1. 进入ik分词器的config目录,打开IKAnalyzer.cfg.xml配置文件
    image
    将地址修改为词库的地址即可。
    没有配置的效果:
    image
    无法识别“摆烂”
  2. 修改fenci.txt文件,添加需要识别的单词,并重启ES:docker restart elasticsearch
    image
    配置成功后的效果:
    image
    能够识别“摆烂”这个单词。
  • Springboot整合elasticsearch
  1. 必须所有es相关依赖版本一致(非常重要)引入elasticsearch-rest-high-level-client依赖并且排除其他版本不一致的子依赖重新引入
        <dependency>
            <groupId>org.elasticsearch.client</groupId>
            <artifactId>elasticsearch-rest-high-level-client</artifactId>
            <version>7.4.2</version>
            <!-- 排除版本不是7.4.2的子依赖 -->
            <exclusions>
                <exclusion>
                    <groupId>org.elasticsearch</groupId>
                    <artifactId>elasticsearch</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.elasticsearch.client</groupId>
                    <artifactId>elasticsearch-rest-client</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        
        <!--    重新引入上面排除的依赖    -->
        <dependency>
            <groupId>org.elasticsearch.client</groupId>
            <artifactId>elasticsearch-rest-client</artifactId>
            <version>7.4.2</version>
        </dependency>
        <dependency>
            <groupId>org.elasticsearch</groupId>
            <artifactId>elasticsearch</artifactId>
            <version>7.4.2</version>
        </dependency>

再次确保版本一致:image

  1. 编写ES相关配置(这里将es地址和端口以及协议抽成配置)
# 自定义 es配置
elasticsearch:
  address: 192.168.1.9
  port: 9200
  scheme: http
  1. 配置类(读取上面抽取配置)
@Configuration
public class ElasticSearchConfig {
    /**
     * 获取配置信息
     */
    @Value("${elasticsearch.address}")
    private String address;

    @Value("${elasticsearch.port}")
    private int port;

    @Value("${elasticsearch.scheme}")
    private String scheme;

    @Bean
    public RestHighLevelClient esRestClient() {
        return new RestHighLevelClient(RestClient.builder(new HttpHost(address, port, scheme)));

    }
}
posted @ 2022-08-16 16:59  加瓦同学  阅读(272)  评论(0)    收藏  举报