一、ElasticSearch数据格式分类:
主要有三种数据格式:index、type、document。
我1在学习的时候喜欢主观的把它去类比数据库的三种格式:
index ====> database
type ====> table
document ====> row (记录)
二、document数据格式:
1.在了解之前我们先想想把对象存到数据库里是怎么样一个麻烦的过程:
(1)应用系统的数据结构都是复杂的。有可能一个套一个。
(2)对象存储到数据库中需要各种拆解,把数据扁平化再存到数据库。
(3)查询的时候还要把数据重新组装成对象格式。
即使我们拥有了强大的orm框架,但它只简化了第三步。
2.document的优点:
(1) ES是面向文档的,文档中存储的数据结构与面向对象的方式是一样的。基于这种格式,ES可以提供全文检索、聚合、分析、等各种复杂操作。
(2) ES文档用json来描述。
举个栗子:
来一个java实体:
public class Employee{
private email;
private int age;
private String firstName;
private String lastName;
private EmployeeInfo info;
private Date joinDate;
}
public class EmployeeInfo{
private String address;
private String city;
}
将上述java实体转换为ES的document:
{
"email":"zhangsan@qq.com",
"first_name":"san",
"last_name":"zhang",
"age":20,
"info":{
"address":"jingdong",
"city":"beijing"
},
"join_date":"2020/1/21"
}
-
新增document: PUT /index/type/id
例如:
PUT /ecommerce/product/1
{
"name":"gaolujie yagao",
"desc":"gaoxiao meibai",
"price":30,
"producer":"gaolujie producer",
"tags":["meibai","fangzhu"]
}
添加成功后显示:
注意:不要跟请求请求方法的那个PUT混淆,这个put就是新增或覆盖.
举例:
更新完以后发现数据全被覆盖了:
4.为了解决这个问题,我们应该使用POST api实现部分修改:
举例子:
我们先把数据恢复成之前的样子
执行更新name:
5.删除document:
删除就比较简单了
DELETE /index/type/id
三.其他API:
快速查看集群中的index:
Get /_cat/indices?v
查询集群健康情况:
GET /_cat/health?v