ES 嵌套查询
背景
一个配方由多种原材料组成,需求是根据各种原材料的用量搜索出对应的配方
配方实体类
class Formula {private long id;private String name;private List<Material> materials;}class Material {@JsonProperty("material_id")private long materialId;private float amount;}
1、定义索引映射 Mapping
PUT /formula
{"mappings": {"properties": {"id": {"type": "long"},"name": {"type": "text"},"materials": {"type": "nested","properties": {"material_id": {"type": "long"},"amount": {"type": "float"}}}}}
}
2、添加测试数据
POST /formula/_doc/1
{"id": "1","name": "formula A","materials": [{ "material_id": "material_1", "amount": 100 },{ "material_id": "material_2", "amount": 50 }]
}POST /formula/_doc/2
{"id": "2","name": "formula B","materials": [{ "material_id": "material_2", "amount": 30 },{ "material_id": "material_3", "amount": 20 }]
}
3、查询
GET /formula/_search
{"query": {"bool": {"must": [{"match": {"name": "formula A"}},{"nested": {"path": "materials","query": {"bool": {"must": [{ "match": { "materials.material_id": "2" } },{ "range": { "materials.amount": { "gte": 40, "lte": 60 } } }]}}}}]}}
}
RestHighLevelClient
// nested
BoolQueryBuilder nestedBoolQueryBuilder = new BoolQueryBuilder();
nestedBoolQueryBuilder.must().add(QueryBuilders.matchPhraseQuery("materials.material_id", 1));
nestedBoolQueryBuilder.must().add(QueryBuilders.rangeQuery("materials.amount").from(40).to(60));
NestedQueryBuilder nestedQueryBuilder = QueryBuilders.nestedQuery("materials", nestedBoolQueryBuilder, ScoreMode.Avg);// query
BoolQueryBuilder boolQueryBuilder = new BoolQueryBuilder();
boolQueryBuilder.must(nestedQueryBuilder);
// simple
boolQueryBuilder.must(QueryBuilders.matchQuery("name", "formula A"));SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
searchSourceBuilder.query(boolQueryBuilder);SearchRequest searchRequest = new SearchRequest(new String[]{index}, searchSourceBuilder);// response
SearchResponse response = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);
ElasticsearchClient
SearchResponse<Formula> response = elasticsearchClient.search(s -> s.index("formula").query(q -> q.match(t -> t.field("name").query("formula A"))).query(q -> q.nested(nq -> nq.path("materials").query(nq1 -> nq1.match(t -> t.field("materials.material_id").query("2"))).query(nq2 -> nq2.range(r -> r.field("materials.amount").from("40").to("60"))))),Formula.class
);
相关文章:
ES 嵌套查询
背景 一个配方由多种原材料组成,需求是根据各种原材料的用量搜索出对应的配方 配方实体类 class Formula {private long id;private String name;private List<Material> materials;}class Material {JsonProperty("material_id")private long m…...
《等保测评实战指南:从评估到加固的全程解析》
在当今数字化时代,信息安全已成为企业生存与发展的基石。随着网络攻击手段的不断演变和复杂度的提升,信息系统等级保护(简称“等保”)作为国家信息安全保障体系的重要组成部分,其重要性日益凸显。《等保测评实战指南&a…...
【24考研·交通】我的考研经历
文章目录 一、考前准备二、政治备考三、英语一备考四、数学一备考五、运筹学备考六、复试/调剂七、结语 距离24考研上考场过去快半年了,距离我拟录取也两个月多了,现在回想起来,最大的感受是:好像做了一场大梦。 其实这篇文章在考…...
ERP系统中有哪些模块?有哪些具体实现方案呢?
对于许多初次接触ERP系统的企业来说,可能会对系统中包含的模块和功能感到困惑。本文将详细介绍ERP系统中的主要模块,需要明确的是,ERP系统是一个庞大的系统,包含了多个模块,每个模块都有其独特的功能和作用。这些模块涵…...
扩散模型在机器学习中的应用及原理
扩散模型在机器学习中的应用及原理 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿! 什么是扩散模型? 在机器学习中,扩散模型ÿ…...
fastapi自定义中间件
fastapi自定义中间件 1、自定义中间件类 from fastapi import Request from starlette.middleware.base import BaseHTTPMiddlewareclass MyMiddleware(BaseHTTPMiddleware):def __init__(self, app,*args, **kwargs):super().__init__(app,*args, **kwargs)async def dispat…...
基于 MCU 的开发,能不能对代码进行单元测试?
在基于微控制器(MCU)的开发中,确实可以对代码进行单元测试,并且随着嵌入式软件开发实践的发展,越来越多的团队开始重视并实施单元测试和自动化测试。 单元测试是一种软件测试方法,用于验证程序模块…...
基于OpenCV与Keras的停车场车位自动识别系统
本项目旨在利用计算机视觉技术和深度学习算法,实现对停车场车位状态的实时自动识别。通过摄像头监控停车场内部,系统能够高效准确地辨认车位是否被占用,为车主提供实时的空闲车位信息,同时为停车场管理者提供智能化的车位管理工具…...
YOLOv10改进教程|C2f-CIB加入注意力机制
一、 导读 论文链接:https://arxiv.org/abs/2311.11587 代码链接:GitHub - CV-ZhangXin/AKConv YOLOv10训练、验证及推理教程 二、 C2f-CIB加入注意力机制 2.1 复制代码 打开ultralytics->nn->modules->block.py文件,复制SE注意力机…...
算法训练营day06 哈希表(统计数,去重,降低时间复杂度)
💡 解题思路 📝 确定输入与输出🔍 分析复杂度🔨 复杂题目拆分 :严谨且完整 地拆分为更小的子问题(哈希表的使用场景)–(多总结)💭 选择处理逻辑:…...
影帝郭晋安关联保健品企业,草姬集团无研发费用销售成本不低
《港湾商业观察》黄懿 5月30日,草姬集团控股有限公司(下称“草姬集团”)递表港交所主板,农银国际为其独家保荐人。 草姬集团成立于1999年,是中国香港多元化保健品、美容与护肤品供应商,由TVB港星郭晋安及…...
leetcode-19-回溯-组合问题(剪枝、去重)
引自代码随想录 一、[77]组合 给定两个整数 n 和 k,返回 1 ... n 中所有可能的 k 个数的组合。 示例: 输入: n 4, k 2 输出: [ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4]] 1、大致逻辑 k为树的深度,到叶子节点的路径即为一个结果 开始索引保证不…...
Java案例实现双色球
一问题: 二具体代码: package 重修;import java.util.Random; import java.util.Scanner;public class first {public static void main(String[] args) {int []usersnumbersusernumslect();System.out.println("用户");for (int i 0; i <…...
JS(JavaScript)的BOM操作
天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…...
【CT】LeetCode手撕—82. 删除排序链表中的重复元素 II
题目 原题连接:82. 删除排序链表中的重复元素 II 1- 思路 模式识别1:已排序链表 ——> 判重逻辑 ,涉及到 while 2- 实现 ⭐82. 删除排序链表中的重复元素 II——题解思路 class Solution {public ListNode deleteDuplicates(ListNode h…...
C++ STL unique_ptr智能指针源码剖析
由于上一篇博客将shared_ptr,weak_ptr,enable_shared_form_this的源码实现整理了一遍,想着cpp智能指针还差个unique_ptr故写下此篇博客,以供学习 源码剖析 一,模板参数 首先,我们先看unique_ptr的模板参数,第一个参数_TP自是不用说表示对象类型,第二个模板参数定义了unique_p…...
Unity中的的文件夹(特殊文件夹)
Unity中的的文件夹(特殊文件夹) Unity工程中的关键文件夹和路径知识点, 以下是对Unity工程中几个关键文件夹和路径的总结: 1. 工程路径获取 print(Application.dataPath) 用途:通常只在编辑模式下使用。注意事项:游戏发布后࿰…...
Go语言定时器Timer和Ticker到底怎么用
原文链接,可获取更多Go语言学习资料 概述 在日常开发中,我们不可避免的需要使用到定时任务用来处理业务逻辑。在Go语言中内置的有两个定时器,Timer和Ticker,合理的使用这两个定时器可以很好的解决定时任务的需求,同时…...
41、web基础和http协议
web基础与http协议 一、web web:就是我们所说得页面,打开网页展示得页面。(全球广域网,万维网) world wide webwww 分布式图形信息系统 http:超文本传输协议 https:加密的超文本传输协议…...
6-173 二分查找的关键字比较次数
6-173 二分查找的关键字比较次数 - (32)专科段数据结构专项练习(2024版) (pintia.cn) int CountSearchTimes(int a[], int low, int high, int x) {int time0;while(low < high){int mid(lowhigh)/2;time;if(a[mid]x)return t…...
wordpress后台更新后 前端没变化的解决方法
使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…...
Leetcode 3577. Count the Number of Computer Unlocking Permutations
Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接:3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯,要想要能够将所有的电脑解锁&#x…...
STM32标准库-DMA直接存储器存取
文章目录 一、DMA1.1简介1.2存储器映像1.3DMA框图1.4DMA基本结构1.5DMA请求1.6数据宽度与对齐1.7数据转运DMA1.8ADC扫描模式DMA 二、数据转运DMA2.1接线图2.2代码2.3相关API 一、DMA 1.1简介 DMA(Direct Memory Access)直接存储器存取 DMA可以提供外设…...
2023赣州旅游投资集团
单选题 1.“不登高山,不知天之高也;不临深溪,不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...
ABAP设计模式之---“简单设计原则(Simple Design)”
“Simple Design”(简单设计)是软件开发中的一个重要理念,倡导以最简单的方式实现软件功能,以确保代码清晰易懂、易维护,并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计,遵循“让事情保…...
重启Eureka集群中的节点,对已经注册的服务有什么影响
先看答案,如果正确地操作,重启Eureka集群中的节点,对已经注册的服务影响非常小,甚至可以做到无感知。 但如果操作不当,可能会引发短暂的服务发现问题。 下面我们从Eureka的核心工作原理来详细分析这个问题。 Eureka的…...
STM32HAL库USART源代码解析及应用
STM32HAL库USART源代码解析 前言STM32CubeIDE配置串口USART和UART的选择使用模式参数设置GPIO配置DMA配置中断配置硬件流控制使能生成代码解析和使用方法串口初始化__UART_HandleTypeDef结构体浅析HAL库代码实际使用方法使用轮询方式发送使用轮询方式接收使用中断方式发送使用中…...
jmeter聚合报告中参数详解
sample、average、min、max、90%line、95%line,99%line、Error错误率、吞吐量Thoughput、KB/sec每秒传输的数据量 sample(样本数) 表示测试中发送的请求数量,即测试执行了多少次请求。 单位,以个或者次数表示。 示例:…...
Ubuntu系统复制(U盘-电脑硬盘)
所需环境 电脑自带硬盘:1块 (1T) U盘1:Ubuntu系统引导盘(用于“U盘2”复制到“电脑自带硬盘”) U盘2:Ubuntu系统盘(1T,用于被复制) !!!建议“电脑…...
LCTF液晶可调谐滤波器在多光谱相机捕捉无人机目标检测中的作用
中达瑞和自2005年成立以来,一直在光谱成像领域深度钻研和发展,始终致力于研发高性能、高可靠性的光谱成像相机,为科研院校提供更优的产品和服务。在《低空背景下无人机目标的光谱特征研究及目标检测应用》这篇论文中提到中达瑞和 LCTF 作为多…...
