解决springboot+ellasticsearch+ik分词器,其中ik分词器无法添加到mapping节点问题

1.ellasticsearch添加IK分词器插件

打开网址,我们在使用分词器的时候一定要 使用与elasticsearch版本相同的分词器,对应官网下载地址为IK下载地址,下载解压以后,在elasticsearch的plugins下新建ik文件夹,将下载的ik解压到ik文件下里面即可。

2.用head插件,查看ik分词器是否起作用

我们重启elasticsearch.bat服务,在head页面复合查询里面输入连接,如下图所示解决springboot+ellasticsearch+ik分词器,其中ik分词器无法添加到mapping节点问题_第1张图片
如果出现上述界面,说明我们环境配置成功了

3.项目启动指定哪些字段采用ik分词器

大家按照我的下面图片配置即可,主要要在字段上面加@Field注解。
解决springboot+ellasticsearch+ik分词器,其中ik分词器无法添加到mapping节点问题_第2张图片
@Document注解,点击进去看到系统默认了许多配置,我们这里就指定了数据库名称indexName,其他为系统默认。(注意:elasticsearch6.多版本不需要指定type了)


@Persistent
@Inherited
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE})
public @interface Document {
    //索引库名称
    String indexName();
    //类型
    String type() default "";
    //
    boolean useServerConfiguration() default false;
    //默认分片数5
    short shards() default 5;
    //默认副本数1
    short replicas() default 1;
    //刷新间隔
    String refreshInterval() default "1s";
    //索引文件存储类型
    String indexStoreType() default "fs";
   //是否创建索引
    boolean createIndex() default true;

@Field注解,同样点击进去

@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.FIELD})
@Documented
@Inherited
public @interface Field {
//属性类型
    FieldType type() default FieldType.Auto;
//默认情况下分词,除非你确定这个字段不需要分词,则可以改为false
    boolean index() default true;
//格式化时间
    DateFormat format() default DateFormat.none;

    String pattern() default "";
//默认不存储原文
    boolean store() default false;

    boolean fielddata() default false;
//指定字段使用搜索时的分词
    String searchAnalyzer() default "";
//指定分词器的选择
    String analyzer() default "";
//指定忽略哪个字段
    String[] ignoreFields() default {};

    boolean includeInParent() default false;
}

4.项目启动创建索引和给索引添加mapping(很多人就是这步没加,导致项目启动成功,发现上面配置的字段分词没有生效

1.先删除原有的索引,注意索引名称就是字段的Document的indexname
2.创建索引(括号里面的类名)
3.配置映射mapping.根据实体类里面字段的Field注解自动完成映射
在这里插入图片描述

5.查看效果图

信息里面选择索引信息,这样就标识我们字段的分词器建立成功,我们通过接口查询的时候,可以看到每个字段被拆分了很多个,相互组合。
解决springboot+ellasticsearch+ik分词器,其中ik分词器无法添加到mapping节点问题_第3张图片

你可能感兴趣的:(spring-boot-专题)