16.java如何添加ES⽂档?嘻哈的简写笔记——ElasticSearch
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,Id()+"");//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;java中index是什么意思
注意: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
。。。。。。。。。。。。。
嘻哈的简写笔记。。。。。。。。。。。。。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论