16.java如何添加ES文档?嘻哈的简写笔记——Elastic Search

1.java如何添加文档?
利用类对象:IndexRequest、RestHighLevelClient

@Test  //java执行文档操作//添加文档
public void test5() throws IOException {
    //创建一个实体类,然后向对象里面传数据
    Novel novel = new Novel(1003,"金瓶梅","滔滔",100L,200L,new Date(),"好书好书");
    //long 类型后面要加L

    //传数据肯定要传JSON,所以要打包成JSON
    ObjectMapper objectMapper = new ObjectMapper();
    String json = objectMapper.writeValueAsString(novel);//把实体类对象传递进去打包

    //添加文档需要创建IndexRequest 类下的request对象;
    IndexRequest request = new IndexRequest(indextName,typeName,novel.getId()+"");//Integer类型如何快速变成String类型加+""
    //参数有索引名,类型名,这里的id可以传递也可以不用传递,不传递的时候系统会给我们指定一个id
    request.source(json, XContentType.JSON);//把打包的JSON等数据一起传递上封装;
    //XContentType.JSON 指定一下前面数据json中是json格式,

    //创建文档
    RestHighLevelClient client = ClientUtils.client();//这是创建java于ES连接的类对象
    IndexResponse reqsponse = client.index(request,RequestOptions.DEFAULT);//这个类对象index方法里把封装的数据一块给传过去
    //这条语句的含义相当于是创建一个文档,通过client对象里的index方法;
    //把request对象,传给它
    //RequestOptions.DEFAULT表示请求方式是默认的;
    System.out.println(reqsponse);//打印返回值;
}

实体类:

@Data
@NoArgsConstructor
@AllArgsConstructor
public class Novel {
    @JsonIgnore
    private Integer id;
    private String name;
    private String author;
    private Long count;
    private Long price;
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")//生成json数据
    //该字段的格式按照该格式显示;
    private Date pubdate;
    private String desc;
}

注意:Long类型的数据后面要加一个L不然会报错,比如 200L;
注意:Integer类型aa快速转换成String类型,使用 aa+”” 就变成了String类型;
注意:实体类生成json数据时,时间格式需要配置使用@JsonFormat(pattern=”yyyy-MM-dd HH:mm:ss”)
注意:@JsonIgnore 注解是用于在打包成json的时候忽略下面那个成员变量的。
为什么要进行忽略我们的id变量呢?可以看我们存进ES里面的数据:

id:1001 name:金瓶梅author:滔滔 count:100  price:200  pubdate:November 26th 2020, 17:18:19.000  desc:好书好书
_id:1001  _type:novel  _index:book  _score:1

这里面有我们指定的id 也有系统默认的字段_id;有一些重复了,所以我们忽略掉我们的自定义的id直接用系统里的_id就好了;变成:

name:金瓶梅author:滔滔 count:100  price:200  pubdate:November 26th 2020, 17:18:19.000  desc:好书好书
_id:1001  _type:novel  _index:book  _score:1

。。。。。。。。。。。。。

嘻哈的简写笔记

。。。。。。。。。。。。。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值