先看看数据库和java bean的结构:
创建两个对象:
public class Student{ private String fristName; private String lastName; private String email; private Date joinDate; private StudentInfo info; } public class StudentInfo{ private String bio;//性格 private Integer age; private String[] interests; //兴趣爱好 } StudentInfo info = new StudentInfo(); info.setBio("开朗"); info.setAge(25); info.setInterests(new String[]{"唱歌","跳舞"}) Student student = new Student(); student.setFrostName("夏"); student.setLastName("文杰"); student.setEmail("[email protected]"); student.setJoinDate("2018-01-01"); student.setInfo(info);
这是传统的通过面向对象来确立两个类之间的关联关系。
当我们要把student对象放入数据库里时,我们会拆分为原来的两个对象,student和studentInfo。
student表:fristName,lastName,email,joinDate,还有一个外键到studentinfo的表中的数据字段。
studentinfo表:bio,bio,interests。
像这样的数据结构,每次查询的时候还要还原数据结构,就相对麻烦,而且也不能表现出最原始的面向对象的数据格式。
es,的数据结构:
es是面向文档(document)的数据格式,和面向对象的数据格式是完全一致的,基于这样的结构,es可以做复杂的索引,全文检索,聚合查询等操作,意思就是不管你在面向对象里怎么嵌套,都可以在es中用一个文档来定义。
es的文档格式是用json格式来定义的:
用es来定义刚刚创建的对象:
{ fristName:"夏", lastName:"文杰", email:"[email protected]", joinDate:"2018-01-01", info:{ bio:"开朗", age:25, interests:["唱歌","跳舞"] }, }