`

Elasticsearch做"关联查询"——nested-parent关系

阅读更多

        Elasticsearch作为一个面向文档的存储服务,并没有严格意义上的关联查询能力。但可以通过mapping来指定文档的nested-parent关系,实现关联。 

下面以学生(student)和班级(clazz)的关系为例,演示这种"关联查询":

 建立一个索引test,有student和clazz两个type,存储班级和学生

首先设置班级和学生的mapping:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
PUT /test
{
   "mappings" : {
     "clazz" : {
         "properties" : {
             "students" : {
                 "type" "nested"
             }
         }
     },
     "student" :{
       "_parent" : {
         "type" "clazz"
       }
     }
   }
}

实测clazz的映射描述可以省略

插入测试数据

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
//班级
PUT /test/clazz/c1
{
   "name" : "class1" ,
   "teacher" : "Mr wang"
}
 
//学生,通过parent=c1将其关联至班级class1
PUT /test/student/s1?parent=c1
{
   "name" : "tom" ,
   "age" : 15
}
//学生,通过parent=c1将其关联至班级class1
PUT /test/student/s2?parent=c1
{
   "name" : "小明" ,
   "age" : 16
}

 

然后就可以查询了

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
//查询班级class1中有哪些学生
GET /test/student/_search
{
     "query" : {
         "has_parent" : {
             "type" "clazz" ,
             "query" : {
                 "match" :{
                     "name" : "class1"
                 }
             }
         }
     }
}
 
//查询小明在哪个班
GET /test/clazz/_search
{
     "query" : {
         "has_child" : {
             "type" "student" ,
             "query" : {
                 "term" : {
                   "name" : {
                     "value" "小明"
                   }
                 }
             }
         }
     }
}
 
 
 
 
http://www.wowtools.org/blog/articles/2015/09/08/1441692036407.html
分享到:
评论

相关推荐

    iOS游戏应用源代码——jstart-facebreak-cocos2d-opengles20.zip

    标题中的“iOS游戏应用源代码——jstart-facebreak-cocos2d-opengles20.zip”揭示了这是一个基于iOS平台的游戏开发项目,源代码使用了Cocos2D游戏引擎,并且利用了OpenGL ES 2.0图形库进行3D渲染。Cocos2D是一款广泛...

    iOS游戏应用源代码——garethstokes-evil-bees-765dfce.zip

    《iOS游戏应用源代码解析——garethstokes-evil-bees-765dfce》 iOS游戏开发是一项集技术与艺术于一体的挑战,涉及到多个层面的技术知识,包括Swift编程语言、UIKit框架、 SpriteKit或SceneKit游戏引擎、Core ...

    IOS应用源码——rsebbe-CeedGL-8575580.rar

    【标题】:“IOS应用源码——rsebbe-CeedGL-8575580.rar”指的是一个压缩包文件,其中包含了名为“rsebbe-CeedGL-8575580”的iOS应用程序的源代码。这个项目可能是由开发者rsebbe创建的,并且可能是一个基于CeedGL库...

    iOS游戏应用源代码——LemonCake-OmNomDonuts-CoreAnimation.zip

    《iOS游戏应用源代码——LemonCake-OmNomDonuts-CoreAnimation》 在这个项目中,我们探讨的是一个基于iOS平台的游戏应用源代码——LemonCake-OmNomDonuts,它利用了Core Animation技术来实现丰富的视觉效果。Core ...

    iOS游戏应用源代码——xissburg-XBImageFilters-1.0.0-11-g577734c.zip

    《iOS游戏应用源代码解析——基于XBImageFilters的图像处理技术》 在移动开发领域,iOS游戏应用一直以来都以其丰富的视觉效果和流畅的用户体验受到广大用户的喜爱。在深入探究iOS游戏开发的过程中,图像处理技术是...

    IOS应用源码——nskboy-glpaint-c870d5b.zip

    3. **CALayer与CAEAGLLayer**:在iOS上,OpenGL ES通常是通过Core Animation框架的CAEAGLLayer来集成的,了解它们之间的关系对理解图形渲染至关重要。 4. **Shader编程**:学习GLSL(OpenGL Shading Language),...

    iOS实例开发源码——jshmrsn-Above---Beyond-Air-Combat-416b529.zip

    这个压缩包文件“iOS实例开发源码——jshmrsn-Above---Beyond-Air-Combat-416b529.zip”显然包含了名为“jshmrsn-Above---Beyond-Air-Combat-416b529”的iOS应用程序的源代码。这可能是一个飞行战斗模拟游戏,名为...

    iOS游戏应用源代码——jshmrsn-Above---Beyond-Air-Combat.zip

    《iOS游戏应用源代码——jshmrsn-Above---Beyond-Air-Combat.zip》这个压缩包文件包含了开发iOS游戏“Above & Beyond Air Combat”的源代码。这款游戏可能是一款空战模拟类游戏,允许玩家体验激动人心的空中战斗。...

    iOS游戏应用源代码——mefistody-FlashToCocos2D.zip

    【标题】"iOS游戏应用源代码——mefistody-FlashToCocos2D.zip" 涉及的关键知识点主要集中在iOS游戏开发和Cocos2D框架的应用上。这个压缩包可能包含了一个使用Cocos2D-iOS引擎将Flash内容移植到iOS平台上的游戏项目...

    iOS游戏应用源代码——laullon-GLTapLabelDemo-08e1e85.zip

    《iOS游戏应用源代码分析——基于laullon-GLTapLabelDemo-08e1e85》 本文将深入探讨iOS游戏应用开发中的一个重要示例项目——laullon-GLTapLabelDemo-08e1e85。这个开源项目提供了一种创新的方式,通过OpenGL ES在...

    iOS游戏应用源代码——rsebbe-CeedGL-8575580.zip

    【iOS游戏应用源代码——rsebbe-CeedGL-8575580.zip】是一个包含iOS游戏应用源代码的压缩包,源自GitHub上的一个项目。这个项目的名称是rsebbe-CeedGL,它基于CeedGL库,用于开发高性能的3D游戏或图形密集型应用程序...

    ES同义词插件 elasticsearch-analysis-dynamic-synonym-6.5.1.rar

    本篇文章将重点讲解“ES同义词插件”——elasticsearch-analysis-dynamic-synonym-6.5.1,这是针对Elasticsearch 6.x版本的一个定制化插件,用于实现同义词处理功能。 标题中的"ES同义词插件 elasticsearch-...

    新版牛津译林7AUnit1语法教(学)案.doc

    这是一份针对初中生的英语语法教学案,主要讲解了7年级A单元第一课的语法重点——一般现在时。一般现在时在英语中用来表达经常性、习惯性的动作、客观真理、现状以及格言等。 **概念与用法:** 1. 经常性或习惯性...

    iOS游戏应用源代码——johnboiles-JBDaylightOverlay-55d414b.zip

    《iOS游戏应用源代码解析——基于johnboiles-JBDaylightOverlay-55d414b.zip》 本文将深入探讨一个iOS游戏应用的源代码,该代码来源于johnboiles的JBDaylightOverlay项目,版本号55d414b。这个开源项目主要涉及的是...

    IOS应用源码——vonProteus-iPhone-OpenGL-Chess-8636ccc.rar

    标题中的"IOS应用源码——vonProteus-iPhone-OpenGL-Chess-8636ccc.rar"指的是一款基于iOS平台的开源游戏项目,名为“vonProteus-iPhone-OpenGL-Chess”。这个项目使用Objective-C编程语言,并且利用OpenGL进行图形...

    iOS游戏应用源代码——gooddoug-Z1-3e72ede.zip

    《深入解析iOS游戏应用源代码——以gooddoug-Z1-3e72ede为例》 在iOS开发领域,游戏应用源代码是开发者们学习、探索和创新的重要资源。本篇将围绕“gooddoug-Z1-3e72ede.zip”这个压缩包中的源代码,深入探讨iOS...

    iOS游戏应用源代码——pppoe-SnakeRPG-53c5c39.zip

    《iOS游戏应用源代码分析——基于pppoe-SnakeRPG-53c5c39.zip》 本文将深入探讨iOS游戏开发中的一个重要案例——pppoe-SnakeRPG项目,该项目的源代码位于提供的zip压缩包内。通过对源代码的解析,我们可以学习到iOS...

    IOS应用源码——zootella-cocos2d-abfc8f6.rar

    【标题】"IOS应用源码——zootella-cocos2d-abfc8f6.rar" 涉及的核心知识点是iOS应用开发以及Cocos2D游戏引擎的使用。Cocos2D是一个开源的2D游戏开发框架,广泛应用于iOS、Android等平台,尤其在创建动画和游戏场景...

    iOS实例开发源码——iliu-ios-cocos2d-viking-cba07f8.zip

    《iOS实例开发源码——iliu-ios-cocos2d-viking-cba07f8》 这个压缩包文件“iliu-ios-cocos2d-viking-cba07f8.zip”显然包含了iOS平台上一个基于Cocos2D的游戏或应用的源代码。Cocos2D是一个广泛使用的2D游戏开发...

    iOS游戏应用源代码——plaetzchen-Super-Herbert.zip

    《iOS游戏应用源代码——plaetzchen-Super-Herbert.zip》是一款专为iOS平台设计的游戏应用程序的源代码包。这个项目名为“plaetzchen-Super-Herbert”,可能是一个儿童向或者休闲类的游戏,其名称暗示了游戏的主角或...

Global site tag (gtag.js) - Google Analytics