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
。。。。。。。。。。。。。
嘻哈的简写笔记
。。。。。。。。。。。。。