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

相关文章

基于MySQL Binlog的Elasticsearch数据同步实践

一、为什么要做 随着马蜂窝的逐渐发展,我们的业务数据越来越多,单纯使用 MySQL 已经不能满足我们的数据查询需求,例如对于商品、订单等数据的多维度检索。 使用 Elasticsearch 存储业务数据可以很好的解决我们业务中的搜索需求。而数据进行异构存储后,随之而来的就是数据同步的问题。 二、现有方法及问题 对于数据同步,我们目前的解决方案是建立数据中间表。把需要检索的业务数据,统一放到一张M

活用c4d官方开发文档查询代码

当你问AI助手比如豆包,如何用python禁止掉xpresso标签时候,它会提示到 这时候要用到两个东西。https://developers.maxon.net/论坛搜索和开发文档 比如这里我就在官方找到正确的id描述 然后我就把参数标签换过来

计算机毕业设计 大学志愿填报系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点赞 👍 收藏 ⭐评论 📝 🍅 文末获取源码联系 👇🏻 精彩专栏推荐订阅 👇🏻 不然下次找不到哟~Java毕业设计项目~热门选题推荐《1000套》 目录 1.技术选型 2.开发工具 3.功能

顺序表之创建,判满,插入,输出

文章目录 🍊自我介绍🍊创建一个空的顺序表,为结构体在堆区分配空间🍊插入数据🍊输出数据🍊判断顺序表是否满了,满了返回值1,否则返回0🍊main函数 你的点赞评论就是对博主最大的鼓励 当然喜欢的小伙伴可以:点赞+关注+评论+收藏(一键四连)哦~ 🍊自我介绍   Hello,大家好,我是小珑也要变强(也是小珑),我是易编程·终身成长社群的一名“创始团队·嘉宾”

ural 1026. Questions and Answers 查询

1026. Questions and Answers Time limit: 2.0 second Memory limit: 64 MB Background The database of the Pentagon contains a top-secret information. We don’t know what the information is — you

Mybatis中的like查询

<if test="templateName != null and templateName != ''">AND template_name LIKE CONCAT('%',#{templateName,jdbcType=VARCHAR},'%')</if>

Python脚本:TXT文档行数统计

count = 0 #计数变量file_dirs = input('请输入您要统计的文件根路径:')filename = open(file_dirs,'r') #以只读方式打开文件file_contents = filename.read() #读取文档内容到file_contentsfor file_content in file_contents:

京东物流查询|开发者调用API接口实现

快递聚合查询的优势 1、高效整合多种快递信息。2、实时动态更新。3、自动化管理流程。 聚合国内外1500家快递公司的物流信息查询服务,使用API接口查询京东物流的便捷步骤,首先选择专业的数据平台的快递API接口:物流快递查询API接口-单号查询API - 探数数据 以下示例是参考的示例代码: import requestsurl = "http://api.tanshuapi.com/a

bcolz文档

原文:http://bcolz.blosc.org/en/latest/reference.html First level variables bcolz.__version__'''bcolz包的版本。''' bcolz.dask_here'''是否检测到dask的最低版本。''' bcolz.min_dask_version'''需要dask的最低版本(dask是可选

DAY16:什么是慢查询,导致的原因,优化方法 | undo log、redo log、binlog的用处 | MySQL有哪些锁

目录 什么是慢查询,导致的原因,优化方法 undo log、redo log、binlog的用处  MySQL有哪些锁   什么是慢查询,导致的原因,优化方法 数据库查询的执行时间超过指定的超时时间时,就被称为慢查询。 导致的原因: 查询语句比较复杂:查询涉及多个表,包含复杂的连接和子查询,可能导致执行时间较长。查询数据量大:当查询的数据量庞大时,即使查询本身并不复杂,也可能导致