Elasticsearch 里的父子文档插入和查询

2024-09-03 02:36

本文主要是介绍Elasticsearch 里的父子文档插入和查询,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

      • 场景
      • 定义
      • insert 语句
      • 查询

场景

父子结点,常用于1:n 关系,有一个父子文档,对应多个子文档。

定义

定义一个my_id 字段
定义一个my_join_field字段,类型是join 类型,这里的relations 指的
相当于sql里的 a.aa=b.bb
aa里面的值是question
bb里面的值是answer
然后认为这两个相等,把父子联系起来

PUT my-index-000001
{"mappings": {"properties": {"my_id": {"type": "keyword"},"my_join_field": { "type": "join","relations": {"question": "answer" }}}}
}

insert 语句

插入父子结点

PUT my-index-000001/_doc/1?refresh
{"my_id": "1","text": "This is a question","my_join_field": {"name": "question" }
}

插入子结点

PUT my-index-000001/_doc/3?routing=1&refresh 
{"my_id": "3","text": "This is an answer","my_join_field": {"name": "answer", "parent": "1" }
}PUT my-index-000001/_doc/4?routing=1&refresh
{"my_id": "4","text": "This is another answer","my_join_field": {"name": "answer","parent": "1"}
}

从上面可以看出来,父子结点要分开插入,至于父文档和子文档,其实两个的字段实际上是通用的,共享同一个mapping

注意观察,通过parent 把具体的父ID和具体的子文档关联了起来。

 "parent": "1"

查询

有两个重要的方法

has_child 用来写child的限定条件,返回父文档

GET /my-index-000001/_search
{"query": {"has_child": {"type": "answer","query": {"match": {"my_id": "具体ID值"}}}}
}

has_parent 用来写parent的限定条件,返回子文档

GET /my-index-000001/_search
{"query": {"has_parent": {"parent_type": "question","query": {"match": {"my_id": "具体ID值"}}}}
}

这篇关于Elasticsearch 里的父子文档插入和查询的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1131782

相关文章

C#如何在Excel文档中获取分页信息

《C#如何在Excel文档中获取分页信息》在日常工作中,我们经常需要处理大量的Excel数据,本文将深入探讨如何利用Spire.XLSfor.NET,高效准确地获取Excel文档中的分页信息,包括水平... 目录理解Excel中的分页机制借助 Spire.XLS for .NET 获取分页信息为什么选择 S

Java利用Spire.XLS for Java自动化设置Excel的文档属性

《Java利用Spire.XLSforJava自动化设置Excel的文档属性》一个专业的Excel文件,其文档属性往往能大大提升文件的可管理性和可检索性,下面我们就来看看Java如何使用Spire... 目录Spire.XLS for Java 库介绍与安装Java 设置内置的 Excel 文档属性Java

Python自动化提取多个Word文档的文本

《Python自动化提取多个Word文档的文本》在日常工作和学习中,我们经常需要处理大量的Word文档,本文将深入探讨如何利用Python批量提取Word文档中的文本内容,帮助你解放生产力,感兴趣的小... 目录为什么需要批量提取Word文档文本批量提取Word文本的核心技术与工具安装 Spire.Doc

C#高效实现在Word文档中自动化创建图表的可视化方案

《C#高效实现在Word文档中自动化创建图表的可视化方案》本文将深入探讨如何利用C#,结合一款功能强大的第三方库,实现在Word文档中自动化创建图表,为你的数据呈现和报告生成提供一套实用且高效的解决方... 目录Word文档图表自动化:为什么选择C#?从零开始:C#实现Word文档图表的基本步骤深度优化:C

使用Python将PDF表格自动提取并写入Word文档表格

《使用Python将PDF表格自动提取并写入Word文档表格》在实际办公与数据处理场景中,PDF文件里的表格往往无法直接复制到Word中,本文将介绍如何使用Python从PDF文件中提取表格数据,并将... 目录引言1. 加载 PDF 文件并准备 Word 文档2. 提取 PDF 表格并创建 Word 表格

SpringBoot简单整合ElasticSearch实践

《SpringBoot简单整合ElasticSearch实践》Elasticsearch支持结构化和非结构化数据检索,通过索引创建和倒排索引文档,提高搜索效率,它基于Lucene封装,分为索引库、类型... 目录一:ElasticSearch支持对结构化和非结构化的数据进行检索二:ES的核心概念Index:

C#借助Spire.XLS for .NET实现在Excel中添加文档属性

《C#借助Spire.XLSfor.NET实现在Excel中添加文档属性》在日常的数据处理和项目管理中,Excel文档扮演着举足轻重的角色,本文将深入探讨如何在C#中借助强大的第三方库Spire.... 目录为什么需要程序化添加Excel文档属性使用Spire.XLS for .NET库实现文档属性管理Sp

MySQL中between and的基本用法、范围查询示例详解

《MySQL中betweenand的基本用法、范围查询示例详解》BETWEENAND操作符在MySQL中用于选择在两个值之间的数据,包括边界值,它支持数值和日期类型,示例展示了如何使用BETWEEN... 目录一、between and语法二、使用示例2.1、betwphpeen and数值查询2.2、be

Java使用Spire.Doc for Java实现Word自动化插入图片

《Java使用Spire.DocforJava实现Word自动化插入图片》在日常工作中,Word文档是不可或缺的工具,而图片作为信息传达的重要载体,其在文档中的插入与布局显得尤为关键,下面我们就来... 目录1. Spire.Doc for Java库介绍与安装2. 使用特定的环绕方式插入图片3. 在指定位

Java利用Spire.Doc for Java实现在模板的基础上创建Word文档

《Java利用Spire.DocforJava实现在模板的基础上创建Word文档》在日常开发中,我们经常需要根据特定数据动态生成Word文档,本文将深入探讨如何利用强大的Java库Spire.Do... 目录1. Spire.Doc for Java 库介绍与安装特点与优势Maven 依赖配置2. 通过替换