es映射规则一旦创建就不能修改 只有创建新的映射 然后把数据从老映射迁移到新映射
package com.kaki.common.es;
import lombok.Data;
import java.math.BigDecimal;
import java.util.List;
/**
* 要存在 es 的数据对应的实体类模型 商品上架把这个类型的数据传给 es es也可以做商品全文搜索
*/
@Data
public class SkuEsModel {
private Long skuId;
private Long spuId;
private String skuTitle;
private BigDecimal skuPrice;
private String skuImg;
private Long saleCount;
private Boolean hasStock;
private Long hotScore;
private Long brandId;
private Long catalogId;
private String brandName;
private String brandImg;
private String catalogName;
private List<Attrs> attrs;
/**
* 如果我内部类与你外部类关系不紧密,耦合程度不高,
* 不需要访问外部类的所有属性或方法,那么我就设计
* 成 静态内部类 。而且,由于静态内部类与外部类并不
* 会保存相互之间的引用,因此在一定程度上,还会节
* 省那么一点内存资源,何乐而不为呢~~
*
* 既然上面已经说了什么时候应该用静态内部类,那么如果你的需求不符合静态内部类所提供的一切好处,
* 你就应该考虑使用 内部类 了。最大的特点就是:你在内
* 部类中需要访问有关外部类的所有属性及方法,我知晓你的一切... ...
*
*
*
* 只有静态内部类才能序列化
*
* 非静态内部类的实例,会隐含保存一个指向其外部类实例的引用。如果进行序列化,估计会有问题。
*/
@Data
public static class Attrs {//把内部类设置为 publc 为了便于其他第三方工具对他进行序列化和反序列化
private Long attrId;
private String attrName;
private String attrValue;
}
/**
* {
* "mappings": {
* "properties": {
* "skuId": {
* "type": "long"
* },
* "spuId": {
* "type": "keyword"
* },
* "skuTitle": {
* "type": "text",
* "analyzer": "ik_smart"
* },
* "skuPrice": {
* "type": "keyword"
* },
* "skuImg": {
* "type": "keyword",
* "index": false,
* "doc_values": false
* },
* "saleCount": {
* "type": "long"
* },
* "hasStock": {
* "type": "boolean"
* },
* "hotScore": {
* "type": "long"
* },
* "brandId": {
* "type": "long"
* },
* "catalogId": {
* "type": "long"
* },
* "brandName": {
* "type": "keyword",
* "index": false,
* "doc_values": false
* },
* "brandImg": {
* "type": "keyword",
* "index": false,
* "doc_values": false
* },
* "catalogName": {
* "type": "keyword",
* "index": false,
* "doc_values": false
* },
* "attrs": {
* "type": "nested",
* "properties": {
* "attrId": {
* "type": "long"
* },
* "attrName": {
* "type": "keyword",
* "index": false,
* "doc_values": false
* },
* "attrValue": {
* "type": "keyword"
* }
* }
* }* }
* }
* }
*/
}