赞
踩
elasticsearch是一个搜索引擎,附带了数据存储功能。相比关系数据库为关系而生而言,elasticsearch并不删除处理数据之间的关系模型。但仍然提供了对此类需求的有限支持,join和nested数据类型。尽管如此,贯穿整个elasticsearch手册都在强调的一句话是The join field shouldn’t be used like joins in a relation database. In Elasticsearch the key to good performance is to de-normalize your data into documents. 在es中,获取高性能的关键,你应该反规范化你的数据。
本节介绍join数据类型。
join数据类型可以在一个index内部的文档间建立父子关系。例如:
下面的index创建语句,创建了一个dep_staff的index,里面包含了dep(父)和staff(子)的父子关系。
- PUT dep_staff
- {
- "mappings": {
- "properties": {
- "no":{
- "type": "keyword"
- },
- "dep_name":{
- "type": "keyword"
- },
- "staff_name":{
- "type": "keyword"
- },
- "dep_staff_rltn":{
- "type": "join",
- "relations":{
- "dep":"staff"
- }
- }
- }
- }
- }

当然,也可以包括多层父子关系。例如:
- PUT dep_staff
- {
- "mappings": {
- "properties": {
- "no":{
- "type": "keyword"
- },
- "dep_name":{
- "type": "keyword"
- },
- "staff_name":{
- "type": "keyword"
- },
- "dep_staff_rltn":{
- "type": "join",
- "relations":{
- "dep":["sub_dep","organize"],
- "sub_dep":"staff",

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。