ES使用copy_to小技巧

一,数据结构
"properties": {"type": { "type": "keyword" } ,"title": { "type": "text", "analyzer": "ik_smart" }, "long_title": { "type": "text", "analyzer": "ik_smart" }, "category_id": { "type": "integer" },"category": { "type": "keyword" },"category_path": { "type": "keyword" },"description": { "type": "text", "analyzer": "ik_smart" },"price": { "type": "scaled_float", "scaling_factor": 100 },"on_sale": { "type": "boolean" },"rating": { "type": "float" },"sold_count": { "type": "integer" },"review_count": { "type": "integer" },"skus": {"type": "nested","properties": {"title": { "type": "text", "analyzer": "ik_smart" }, "description": { "type": "text", "analyzer": "ik_smart"},"price": { "type": "scaled_float", "scaling_factor": 100 }}},"properties": {"type": "nested","properties": {"name": { "type": "keyword" }, "value": { "type": "keyword" }}}}

此时我们想查询在skus中存在或者properties中存在的某个匹配的值,skus和properties都是nested嵌套对象类型的,想要的匹配条件并非在一个nested中,如果使用查询

{"query": {"nested": {"path": "skus","query": {"bool": {"must": [{"multi_match": {"query": "256G","fields": ["skus.title","skus.description","properties.value"]}}]}}}}
}

来查询,并不能得到我们的预期(properties.name中有256G)。如果要硬写查询DSL那就更复杂了。我们可以使用copy_to来优化一下结构。

"properties": {"type": { "type": "keyword" } ,"title": { "type": "text", "analyzer": "ik_smart" }, "long_title": { "type": "text", "analyzer": "ik_smart" }, "category_id": { "type": "integer" },"category": { "type": "keyword" },"category_path": { "type": "keyword" },"description": { "type": "text", "analyzer": "ik_smart" },"price": { "type": "scaled_float", "scaling_factor": 100 },"on_sale": { "type": "boolean" },"rating": { "type": "float" },"sold_count": { "type": "integer" },"review_count": { "type": "integer" },"skus": {"type": "nested","properties": {"title": { "type": "text", "analyzer": "ik_smart", "copy_to": "skus_title" }, "description": { "type": "text", "analyzer": "ik_smart", "copy_to": "skus_description" },"price": { "type": "scaled_float", "scaling_factor": 100 }}},"properties": {"type": "nested","properties": {"name": { "type": "keyword" }, "value": { "type": "keyword", "copy_to": "properties_value" }}}}

给properties.title加上了copy_to参数,值是skus_title,Elasticsearch 就会把这个字段值复制到 skus_title 字段里,这样就可以在 multi_match 的 fields 里通过 skus_title 来匹配。skus.description 和 properties.name 同理。(修改了mapping后一定要记得重新同步数据)

{"query": {"bool": {"must": [{"multi_match": {"query": "256G","fields": ["skus_title","skus_description","properties_value"]}}]}}
}

使用此查询语句即可获得正确的数据。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/777925.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OpenFeign原理整理【Java面试】

OpenFeign 核心流程 1.在 Spring 项目启动阶段,服务 A 的OpenFeign 框架会发起一个主动的扫包流程。 2.从指定的目录下扫描并加载所有被 FeignClient 注解修饰的接口,然后将这些接口转换成 Bean,统一交给 Spring 来管理。 3.根据这些接口会…

【冥想X理工科思维】场景13:系统上线遭遇崩溃…

冥想音频合集:职场解压冥想音频 压力场景: 我搭建的系统刚刚在客户那边上线不到三天,系统就崩溃了,客户打电话来对我破口大骂,我该如何借助冥想调整面对客户时的压力? 点击看大图: 详细说明&…

从零开始的软件开发实战:互联网医院APP搭建详解

今天,笔者将以“从零开始的软件开发实战:互联网医院APP搭建详解”为主题,深入探讨互联网医院APP的开发过程和关键技术。 第一步:需求分析和规划 互联网医院APP的主要功能包括在线挂号、医生预约、医疗咨询、健康档案管理等。我们…

uniApp使用XR-Frame创建3D场景(7)加入点击交互

上篇文章讲述了如何将XR-Frame作为子组件集成到uniApp中使用 这篇我们讲解如何与场景中的模型交互&#xff08;点击识别&#xff09; 先看源码 <xr-scene render-system"alpha:true" bind:ready"handleReady"><xr-node><xr-mesh id"…

网络socket编程(一)——socket接口函数、面向数据报的UDP编程及测试、select函数应用

目录 一、socket简介 二、socket编程接口函数介绍 2.1 socket()函数&#xff08;创建socket&#xff09; 2.2 bind()函数&#xff08;绑定地址和端口&#xff09; 2.3 listen()函数&#xff08;设置socket为监听模式&#xff09; 2.4 accept()函数&#xff08;接受连接…

jupyter notebook的各种问题和解决办法

安装jupyter&#xff0c;无法启动&#xff0c;或者经常crash 解决办法&#xff1a; 1,不要安装anaconda全家桶&#xff0c;速度慢&#xff0c;而且会安装另外一套python和库&#xff0c;导致代码跑不起来&#xff0c;容易crash。 2&#xff0c;直接安装jupyter&#xff1a; p…

八大技术趋势案例(人工智能物联网)

科技巨变,未来已来,八大技术趋势引领数字化时代。信息技术的迅猛发展,深刻改变了我们的生活、工作和生产方式。人工智能、物联网、云计算、大数据、虚拟现实、增强现实、区块链、量子计算等新兴技术在各行各业得到广泛应用,为各个领域带来了新的活力和变革。 为了更好地了解…

Spark-Scala语言实战(6)

在之前的文章中&#xff0c;我们学习了如何在scala中定义与使用类和对象&#xff0c;并做了几道例题。想了解的朋友可以查看这篇文章。同时&#xff0c;希望我的文章能帮助到你&#xff0c;如果觉得我的文章写的不错&#xff0c;请留下你宝贵的点赞&#xff0c;谢谢。 Spark-S…

HCIA-Datacom H12-811 题库补充(3/28)

完整题库及答案解析&#xff0c;请直接扫描上方二维码&#xff0c;持续更新中 OSPFv3使用哪个区域号标识骨干区域&#xff1f; A&#xff1a;0 B&#xff1a;3 C&#xff1a;1 D&#xff1a;2 答案&#xff1a;A 解析&#xff1a;AREA 号0就是骨干区域。 STP下游设备通知上游…

eplan部件清单的生成及自建部件库简介

生成报表页面: 右下图是报表页面,如果图纸有改动,点左图更新 举例,下图有急停按钮符号,要把急停按钮显示在清单里.第一步,已经有了符号(下左图急停),符号有设备标识符.第二步就是简易自建部件,第三部是在符号属性里关联自建部件 上图是右键点击同类型的部件,然后新建.下图新建部…

进阶了解C++(6)——二叉树OJ题

Leetcode.606.根据二叉树创建字符串&#xff1a; 606. 根据二叉树创建字符串 - 力扣&#xff08;LeetCode&#xff09; 难度不大&#xff0c;根据题目的描述&#xff0c;首先对二叉树进行一次前序遍历&#xff0c;即&#xff1a; class Solution { public:string tree2str(Tr…

jmeter总结之:Regular Expression Extractor元件

Regular Expression Extractor是一个后处理器元件&#xff0c;使用正则从服务器的响应中提取数据&#xff0c;并将这些数据保存到JMeter变量中&#xff0c;以便在后续的请求或断言中使用。在处理动态数据或验证响应中的特定信息时很有用。 添加Regular Expression Extractor元…

Capture One Pro 22 for Mac/win:重塑RAW图像处理的艺术

在数字摄影的世界里&#xff0c;RAW图像处理软件无疑是摄影师们手中的魔法棒&#xff0c;而Capture One Pro 22无疑是这一领域的璀璨明星。这款专为Mac和Windows系统打造的图像处理软件&#xff0c;以其出色的性能、丰富的功能和极致的用户体验&#xff0c;赢得了全球摄影师的广…

【设计模式】原型模式详解

概述 用一个已经创建的实例作为原型&#xff0c;通过复制该原型对象来创建一个和原型对象相同的新对象 结构 抽象原型类&#xff1a;规定了具体原型对象必须实现的clone()方法具体原型类&#xff1a;实现抽象原型类的clone()方法&#xff0c;它是可以被复制的对象。访问类&…

Spring Boot 单元测试 0基础教程

咱们以一种通俗易懂的方式&#xff0c;通过一个简单的实例来教你怎么在Spring Boot项目中进行单元测试。 假设你有一个简单的Spring Boot应用&#xff0c;里面有一个UserService接口&#xff0c;以及它的实现类 UserServiceImpl&#xff0c;这个服务有一个方法用来获取用户的问…

数据库原理与应用(SQL Server)笔记 关系数据库

目录 一、关系数据库的基本概念&#xff08;一&#xff09;关系数据库的定义&#xff08;二&#xff09;基本表、视图&#xff08;三&#xff09;元组、属性、域&#xff08;四&#xff09;候选码、主码、外码 二、关系模型三、关系的完整性&#xff08;一&#xff09;实体完整…

010——服务器开发环境搭建及开发方法(下)

目录 三、 第一个驱动程序 四、 buildroot 4.1 制作根文件系统 4.2 buildroot使用 五、 uboot 009——服务器开发环境搭建及开发方法&#xff08;上&#xff09;-CSDN博客 三、 第一个驱动程序 # 1. 使用不同的开发板内核时, 一定要修改KERN_DIR # 2. KERN_DIR中的内核要…

机器学习和神经网络9

通过前几次学习,相信对机器学习和神经网络已经有了较为深入的了解。 让我们从一些经典的机器学习算法和实际代码示例开始。: 线性回归:用于预测连续输出的基本算法。你可以从这里找到详细的原理和代码示例。 K-近邻算法 (k-Nearest Neighbors, kNN):一种简单但有效的分类和…

百度智能云推出AI大模型全家桶;抖音发布 AI 生成虚拟人物治理公告

百度智能云推出大模型全家桶 百度智能云昨日在北京首钢园召开「Al Cloud Day: 大模型应用产品发布会」&#xff0c;此次发布会上&#xff0c;百度智能云宣布对以下 7 款产品进行升级。 数字人平台百度智能云曦灵智能客服平台百度智能云客悦内容创作平台「一念」知识智平台「甄…

npm淘宝镜像源切换

查询 npm config get registry注意因为淘宝的镜像域名更换&#xff0c;https://registry.npm.taobao.org域名HTTPS证书到期更换为https://registry.npmmirror.com/ 切换 npm config set registry https://registry.npmmirror.com/