一、版本
spring-boot版本:2.3.7.RELEASE
Elasticsearch7.8.0
版本说明详见
二、Elasticsearch 下载和安装
Elasticsearch 下载
kibana下载
ik分词器下载
配置IK分词器
2.1 解压,在elasticsearch-7.8.0\plugins 路径下新建ik目录
2.2 将ik分词器解压放入ik目录
2.3 扩展词汇测试示例
2.3.1 ik/config 目录下新建custom.dic文件
2.3.2 编辑custom.dic文件,加入新词汇
注意:custom.dic文件内容的格式的编码为UTF-8格式编码,否则会导致扩展词汇失效。
2.3.3 打开 IKAnalyzer.cfg.xml 文件,将新建的 custom.dic 配置其中,如下图
2.4 编辑kibana.yml ,修改kibana配置
三、新建Springboot项目,整合Elasticsearch并测试
3.1 加入依赖,配置
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>
spring:
main:
allow-bean-definition-overriding: true
elasticsearch:
rest:
uris: http://localhost:9200
3.2 新建实体类SkuEs
@Data
@Document(indexName = "skues" ,shards = 3,replicas = 1)
public class SkuEs {
// 商品Id= skuId
@Id
private Long id;
@Field(type = FieldType.Text, analyzer = "ik_max_word")
private String keyword;
@Field(type = FieldType.Integer, index = false)
private Integer skuType;
@Field(type = FieldType.Integer, index = false)
private Integer isNewPerson;
@Field(type = FieldType.Long)
private Long categoryId;
@Field(type = FieldType.Text)
private String categoryName;
@Field(type = FieldType.Keyword, index = false)
private String imgUrl;
// es 中能分词的字段,这个字段数据类型必须是 text!keyword 不分词!
@Field(type = FieldType.Text)
private String title;
@Field(type = FieldType.Double)
private Double price;
@Field(type = FieldType.Integer, index = false)
private Integer stock;
@Field(type = FieldType.Integer, index = false)
private Integer perLimit;
@Field(type = FieldType.Integer, index = false)
private Integer sale;
@Field(type = FieldType.Long)
private Long wareId;
// 商品的热度!
@Field(type = FieldType.Long)
private Long hotScore = 0L;
@Field(type = FieldType.Object, index = false)
private List<String> ruleList;
}
3.2 新建接口SkuRepository
public interface SkuRepository extends ElasticsearchRepository<SkuEs,Long> {
}
3.3 测试
@Service
public class SkuServiceImpl implements SkuService {
@Autowired
private SkuRepository skuRepository;
@Override
public void upperSku(Long skuId) {
// 3 调用方法添加ES
SkuEs skuEs = new SkuEs();
skuEs.setCategoryId(11111l);
skuEs.setCategoryName("name");
skuEs.setId(1123l);
skuEs.setKeyword("keyword");
skuEs.setWareId(1123l);
skuEs.setIsNewPerson(12);
skuEs.setImgUrl("url");
skuEs.setTitle("SkuName");
skuEs.setSkuType(0);
skuEs.setPrice(123.1);
skuEs.setStock(11);
skuEs.setSale(21);
skuEs.setPerLimit(123);
skuRepository.save(skuEs);
}
}
3.4 运行结果
打开kibana控制台:http://localhost:5601/app/kibana#/dev_tools/console