ES中nest Join
nested
类型是一个特殊object
数据类型,允许数组的object
的字段可以被独立的查询出来。
数据类型是如何被封装的
在lucene中没有嵌套object
的概念,所以ES的用一个简单的数据数据列表来表示一个复杂的层次数据实体,例如一个博客和评论的实体:
1 | PUT nesttest/_doc |
其中commet
类型会被转化成一个数组的形式如下:
1 | { |
而当执行查询的时候:
1 | GET nesttest/_search |
发现查询结果如下:
1 | { |
上面把所有的结果都列出来了, 但是 john
的不在shenzhen
啊?所以需要把commet
定义为nested
类型。
定义nested类型
1 | PUT nest_new/_mapping/_doc |
ES嵌套深度被限制在50层