博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Springboot-data-es 自动创建mapping(mapping的数据结构为空)以及自动添加新字段(生成mapping的数据结构)
阅读量:4289 次
发布时间:2019-05-27

本文共 3142 字,大约阅读时间需要 10 分钟。

一步  创建mapping

要想让springboot自动启动时候自动创建mapping

1.定义实体:

package com.ljf.springboot.data.es.model;import org.springframework.data.annotation.Id;import org.springframework.data.elasticsearch.annotations.DateFormat;import org.springframework.data.elasticsearch.annotations.Document;import org.springframework.data.elasticsearch.annotations.Field;import org.springframework.data.elasticsearch.annotations.FieldType;import java.io.Serializable;/** * @className Book * @Description TODO * @Author admin * @Date 2019/4/24 17:11 * @Version 1.0 **/// SpringBoot启动时会自动创建映射,但要注意如果已经存在相同的index,必须先删除//@Document(indexName = "#{esMyConfig.indexName}",type="#{esMyConfig.typeName}")@Document(indexName = "book",type="bookentity")public class Book implements Serializable {    @Id    private String id;    //@Field(type= FieldType.Text)    private String title;    //@Field(type= FieldType.Keyword)    private String author;   // @Field(format= DateFormat.custom,pattern = "yyyy-MM-dd HH:mm:ss",type= FieldType.Date)    private String createDate;   // @Field(type= FieldType.Long)    private double price;  //  @Field(type= FieldType.Integer)    private Integer age;    public Book() {    }    public String getId() {        return id;    }    public void setId(String id) {        this.id = id;    }    public String getTitle() {        return title;    }    public void setTitle(String title) {        this.title = title;    }    public String getAuthor() {        return author;    }    public void setAuthor(String author) {        this.author = author;    }    public String getCreateDate() {        return createDate;    }    public void setCreateDate(String createDate) {        this.createDate = createDate;    }    public double getPrice() {        return price;    }    public void setPrice(double price) {        this.price = price;    }    public Integer getAge() {        return age;    }    public void setAge(Integer age) {        this.age = age;    }}

2.创建实体仓库:注意没有这一步,即便在实体上方设置@Document(indexName = "book",type="bookentity"),springboot启动也不会创建mapping

package com.ljf.springboot.data.es.repository;import com.ljf.springboot.data.es.model.Book;import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;import org.springframework.stereotype.Repository;import java.util.List;@Repositorypublic interface BookRepository extends ElasticsearchRepository
{ List
findByTitle(String title);}

3.创建了mapping,但没有字段:即创建了一个空mapping

这是因为在定义book实体时候,字段没有加注解:

   @Id

    private String id;
    //@Field(type= FieldType.Text)
    private String title;
    //@Field(type= FieldType.Keyword)
    private String author;
   // @Field(format= DateFormat.custom,pattern = "yyyy-MM-dd HH:mm:ss",type= FieldType.Date)
    private String createDate;
   // @Field(type= FieldType.Long)
    private double price;
  //  @Field(type= FieldType.Integer)
    private Integer age;

所以在springboot启动创建mapping时候创建了一个空mapping

4.添加一条数据:再查看mapping结构

执行添加数据请求:

新加的数据如下:

再次查看mapping结构:mapping已经有了数据结构,

结论:

spring-data-elastic:

1.映射实体类字段没有加注解

2.实体类添加了新的字段,

这两种情况,在保存数据的时候,会创建新的mapping,自动加上新的字段结构,形成新的mapping。

spring-data-elastic:实体类加了注解,springboot自启动时候,会创建具有相应字段的mapping结构,即mapping不为空。

 

 

转载地址:http://axtgi.baihongyu.com/

你可能感兴趣的文章
iOS之UILabel------分类创建label,计算文本大小
查看>>
iOS之xib创建view、initWithCoder、awakeFromNib
查看>>
nodejs之异常的处理
查看>>
nodejs之参数的接收GET 和POST
查看>>
iOS之app的运行原理
查看>>
nodejs之异步流程控制ASYNC
查看>>
iOS之跑马灯的实现
查看>>
nodejs之npm的使用、nvm
查看>>
iOS之javascript调用oc
查看>>
nodejs之express(一)简单实现路由
查看>>
nodejs之代码操作mysql(直连和连接池连接mysql)\mysql权限操作
查看>>
nodejs之事件处理机制(抛出事件、监听事件)
查看>>
iOS常用之绑卡或实名认证、收货地址
查看>>
iOS常用之imageview和scrollView显示长图片
查看>>
nodejs之http.request 网页抓取数据
查看>>
iOS常用之tableview的View和controller分离,tableview多级列表
查看>>
MAC硬盘目录结构详解及相关操作
查看>>
nodejs之nightmare的使用--网络爬虫---论坛灌水
查看>>
nodejs操作数据库mongodb
查看>>
nodejs之nodemailer发送邮件
查看>>