ElasticSearch Nested类型全文检索、聚合查询
ElasticSearch Nested类型全文检索、聚合查询
Nested类型全文检索
- 创建索引
PUT /products1
{"mappings": {"properties": {"fulltext": {"type": "text"},"name": {"type": "text","fields": {"keyword": {"type": "keyword","ignore_above": 256}}},"reviews": {"type": "nested","properties": {"rating": {"type": "integer"},"author": {"type": "text","copy_to": "fulltext"},"date": {"type": "date"}}}}}
}
以上创建索引语句中实现全文检索重点为"fulltext": { "type": "text" }和"copy_to": "fulltext",nested类型中哪个text类型的字段需要全文检索,就在字段上加"copy_to": "fulltext"
- 添加数据
PUT /products1/_doc/1
{"name": "Product A","reviews": [{"rating": 5,"author": "Alice","date": "2021-01-01"},{"rating": 4,"author": "Bob","date": "2021-01-02"}]
}PUT /products1/_doc/2
{"name": "Product B","reviews": [{"rating": 1,"author": "John","date": "2021-01-03"},{"rating": 2,"author": "Mary","date": "2021-01-04"},{"rating": 3,"author": "James","date": "2021-01-05"},{"rating": 4,"author": "Elisabeth","date": "2021-01-06"},{"rating": 5,"author": "Richard","date": "2021-01-07"}]
}PUT /products1/_doc/3
{"name": "Product C","reviews": [{"rating": 1,"author": "Alex","date": "2021-01-03"},{"rating": 2,"author": "Alice","date": "2021-01-04"}]
}
- 执行查询
POST products1/_search
{"query": {"simple_query_string": {"query": "Alice"}}
}
- 结果如下,可以看到nested类型中包含Alice的数据也被检索出来了
{"took" : 2,"timed_out" : false,"_shards" : {"total" : 1,"successful" : 1,"skipped" : 0,"failed" : 0},"hits" : {"total" : {"value" : 2,"relation" : "eq"},"max_score" : 0.5442147,"hits" : [{"_index" : "products1","_type" : "_doc","_id" : "1","_score" : 0.5442147,"_source" : {"name" : "Product A","reviews" : [{"rating" : 5,"author" : "Alice","date" : "2021-01-01"},{"rating" : 4,"author" : "Bob","date" : "2021-01-02"}]}},{"_index" : "products1","_type" : "_doc","_id" : "3","_score" : 0.5442147,"_source" : {"name" : "Product C","reviews" : [{"rating" : 1,"author" : "Alex","date" : "2021-01-03"},{"rating" : 2,"author" : "Alice","date" : "2021-01-04"}]}}]}
}
以上可以看到实现nested类型全文检索
nested类型聚合查询
还是在上面product1索引中测试
- 现在,您可以对嵌套文档执行嵌套聚合。例如,让我们计算每个产品的平均评分:
GET /products1/_search
{"size": 0,"aggs": {"聚合名称": {"terms": {"field": "name.keyword"},"aggs": {"reviews": {"nested": {"path": "reviews"},"aggs": {"average_rating": {"avg": {"field": "reviews.rating"}}}}}}}
}
- 我们首先使用术语聚合为每个产品创建存储桶。然后,对于每个产品,我们运行嵌套聚合,以便我们可以访问嵌套文档的集合。最后,我们可以计算这些嵌套文档的指标聚合,在我们的示例中是平均评分
{"took" : 3,"timed_out" : false,"_shards" : {"total" : 1,"successful" : 1,"skipped" : 0,"failed" : 0},"hits" : {"total" : {"value" : 3,"relation" : "eq"},"max_score" : null,"hits" : [ ]},"aggregations" : {"products" : {"doc_count_error_upper_bound" : 0,"sum_other_doc_count" : 0,"buckets" : [{"key" : "Product A","doc_count" : 1,"reviews" : {"doc_count" : 2,"average_rating" : {"value" : 4.5}}},{"key" : "Product B","doc_count" : 1,"reviews" : {"doc_count" : 5,"average_rating" : {"value" : 3.0}}},{"key" : "Product C","doc_count" : 1,"reviews" : {"doc_count" : 2,"average_rating" : {"value" : 1.5}}}]}}
}相关文章:
ElasticSearch Nested类型全文检索、聚合查询
ElasticSearch Nested类型全文检索、聚合查询 Nested类型全文检索 创建索引 PUT /products1 {"mappings": {"properties": {"fulltext": {"type": "text"},"name": {"type": "text","…...
专业级的渗透测试服务,助力航空业数字化安全启航
某知名航空公司是中国首批民营航空公司之一,运营国内外航线200多条,也是国内民航最高客座率的航空公司之一。在数字化发展中,该航空公司以数据驱动决策,通过精细化管理、数字创新和模式优化等方式,实现了精准营销和个…...
【docker】安装 Redis
查看可用的 redis版本 docker search redis拉取 redis最新镜像 docker pull redis:latest查看本地镜像 docker images创建挂在文件 mkdir -pv /test1/docker_volume/redis/datamkdir -pv /test1/docker_volume/redis/confcd /test1/docker_volume/redis/conf/touch redis.con…...
pinia的独立维护,统一导出及持久化
目录 1.说明及示例 2.注意 1.说明及示例 在src下创建store文件夹,在store文件夹下创建index.js文件,内容如下: import { createPinia } from "pinia"; // pinia的持久化 import piniaPluginPersistedstate from "pinia-pl…...
【AI视野·今日Robot 机器人论文速览 第六十七期】Mon, 1 Jan 2024
AI视野今日CS.Robotics 机器人学论文速览 Mon, 1 Jan 2024 Totally 16 papers 👉上期速览✈更多精彩请移步主页 Daily Robotics Papers MURP: Multi-Agent Ultra-Wideband Relative Pose Estimation with Constrained Communications in 3D Environments Authors A…...
FBL刷写
刷写 1、刷写需求的理解2、刷写流程2.1、预编程阶段:保证在编程阶段的动作能够正常操作,控制器给响应。整车功能不会出现问题 刷写某一控制器时,避免其他控制器集DTC,85控制DTC; 28 通信控制.保证总线负载率不要过高(下…...
OpenCV-Python(24):模板匹配
原理及介绍 模板匹配是一种常用的图像处理技术,它用于在一幅图像中寻找与给定模板最匹配的区域(在一副大图中搜寻查找模版图像位置的方法)。模板匹配的基本思想是将模板图像在目标图像上滑动,并计算它们的相似度,找到相似度最高的位置即为匹配…...
机器学习--回归算法
🌳🌳🌳小谈:一直想整理机器学习的相关笔记,但是一直在推脱,今天发现知识快忘却了(虽然学的也不是那么深),但还是浅浅整理一下吧,便于以后重新学习。 …...
计算机网络——多址复用技术
1. 频分多址(FDMA) 1.1 基本原理 频率分配:在FDMA系统中,整个可用的频带被分割成多个较小的频带或通道。每个通道分配给一个用户。 时间利用:用户在分配给他们的频道上持续进行通信,不受时间限制。 1.2 优…...
stm32 HAL库 4096线ABZ编码器
[TOC]目录 ABZ编码器 4096线 买的是这个 AB相代表计数方向,Z代表过零点 cubemx配置 定时器Encoder 也可以选上DMA 中断 Z相GPIO中断 找一个空闲管脚 打开对应中断 代码 不用DMA int main(void) {short Enc_cnt 0;HAL_TIM_Encoder_Start_IT(&ht…...
Java爬虫之Jsoup
1.Jsoup相关概念 Jsoup很多概念和js类似,可参照对比理解 Document :文档对象。每份HTML页面都是一个文档对象,Document 是 jsoup 体系中最顶层的结构。 Element:元素对象。一个 Document 中可以着包含着多个 Element 对象&#…...
如何在 C# 12 中使用主构造函数
C# 12 中最引人注目的新功能之一是对主构造函数的支持。主构造函数的概念并不新鲜。包括 Scala、Kotlin 和 OCaml 在内的多种编程语言都支持直接在声明类的位置集成构造函数参数。 在本文中,我们将仔细研究主构造函数以及如何在 C# 12 中使用它们。若要运行本文中提…...
Zookeeper之Java客户端实战
ZooKeeper应用的开发主要通过Java客户端API去连接和操作ZooKeeper集群。可供选择的Java客户端API有: ZooKeeper官方的Java客户端API。第三方的Java客户端API,比如Curator。 接下来我们将逐一学习一下这两个java客户端是如何操作zookeeper的。 1. ZooKe…...
将文本文件导入Oracle数据库的简便方法:SQL Loader Express
需求 我有一个文本文件dbim.txt,是通过alert log生成的,内容如下: 2020-09-11 2020-09-11 ... 2023-12-03 2023-12-03 2023-12-26我已经在Oracle数据库中建立了目标表: create table dbim(a varchar(16));我想把日志文件导入Or…...
element-ui table-自定义表格某列的表头样式或者功能
自带表格 自定义表格某列的表头样式或者功能 <el-table><el-table-column :prop"date">//自定义表身每行数据<template slot-scope"scope">{{scope.row[scope.column.label] - ? - : scope.row[scope.column.label]}}</template>…...
Android 13.0 SystemUI状态栏居中显示时间和修改时间显示样式
1.概述 在13.0的系统rom定制化开发中,在systemui状态栏系统时间默认显示在左边和通知显示在一起,但是客户想修改显示位置,想显示在中间,所以就要修改SystemUI 的Clock.java 文件这个就是管理显示时间的,居中显示的话就得修改布局文件了 效果图如下: 2.SystemUI状态栏居中显…...
讲解eureca和nacus的区别
Eureca和Nacus都是远程过程调用(RPC)框架,用于实现分布式系统中不同节点之间的通信。它们之间的主要区别如下: 架构设计:Eureca是一个基于JavaScript的RPC框架,它使用了WebSockets作为传输层协议。Eureca C…...
python中parsel模块的css解析
一、爬虫页面分类 1.想要爬取的内容全部在标签中,可以使用xpath去进行解析如下图 2.想要爬取的内容呈现json的数据特征,用.json()转换为字典格式 3.页面不规则,标签中包含大括号,如下面想要获取键值内容怎么做,先用re正…...
Oracle OCP怎么样线上考试呢
大家好!今天咱们就来聊聊Oracle OCP这个让人又爱又恨的认证。为啥说又爱又恨呢?因为它既是IT界的“金字招牌”,又是一块硬骨头,不是那么容易啃下来的。好了,废话不多说,我们直奔主题,来看看关于…...
如何让自己的写的程序在阿里云一直运行
购买了阿里云服务器后,每次要用自己写在阿里云的服务器程序都要连接到云端 然后./运行该程序,而且每次一断开终端,该服务器就会自动停止,这样使用相当麻烦。那怎样才能让我们的服务器一直在云端后台运行,即便退出终端…...
Cataclysm: Dark Days Ahead - 在末日废土中生存的终极指南
Cataclysm: Dark Days Ahead - 在末日废土中生存的终极指南 【免费下载链接】Cataclysm-DDA Cataclysm - Dark Days Ahead. A turn-based survival game set in a post-apocalyptic world. 项目地址: https://gitcode.com/GitHub_Trending/ca/Cataclysm-DDA 欢迎来到Cat…...
Maestro移动测试自动化成长路径:从零基础到专家的完整技能图谱
Maestro移动测试自动化成长路径:从零基础到专家的完整技能图谱 【免费下载链接】maestro Painless Mobile UI Automation 项目地址: https://gitcode.com/GitHub_Trending/ma/maestro 想要构建可靠的移动应用测试体系却不知从何开始?Maestro移动测…...
OpenClaw省钱方案:自建Qwen3-VL:30B替代高价多模态API
OpenClaw省钱方案:自建Qwen3-VL:30B替代高价多模态API 1. 为什么选择自建多模态模型 去年我在开发一个智能内容分析系统时,每月在商用多模态API上的支出高达数千元。当我尝试用OpenClaw对接本地部署的Qwen3-VL:30B后,成本直接降到了原来的1…...
为什么C++开发者需要关注LunaSVG这个SVG渲染库?
为什么C开发者需要关注LunaSVG这个SVG渲染库? 【免费下载链接】lunasvg lunasvg is a standalone SVG rendering library in C 项目地址: https://gitcode.com/gh_mirrors/lu/lunasvg 在现代软件开发中,矢量图形处理已经成为许多应用程序的核心需…...
Chandra AI性能调优:GPU显存优化全攻略
Chandra AI性能调优:GPU显存优化全攻略 1. 引言 跑大模型最头疼的是什么?对,就是那个让人又爱又恨的GPU显存!明明买了张不错的显卡,结果跑个模型就提示"Out of Memory",这种经历想必很多朋友都…...
别再踩坑了!CentOS Stream 9下IPXE源码编译保姆级教程(附gcc版本对照表)
CentOS Stream 9下IPXE源码编译全指南:从版本陷阱到高效实践 最近在自动化装机项目中,我不得不面对一个看似简单却充满陷阱的任务:编译IPXE引导文件。本以为按照网上教程半小时就能搞定,结果却在各种版本兼容性问题中挣扎了两天。…...
Meta Manus vs OpenClaw:2026年AI Agent之战,谁才是你的最佳选择?
## 引言2026年AI Agent市场迎来爆发式增长,预计到2034年将达到1400亿美元规模。在这个赛道上,Meta的Manus和开源项目OpenClaw成为最受关注的两大竞争者。本文将深入分析两者的差异,帮助你做出最佳选择。## Meta Manus:巨头的入场#…...
Wonder3D:从单张图片生成3D模型的终极指南
Wonder3D:从单张图片生成3D模型的终极指南 【免费下载链接】Wonder3D Single Image to 3D using Cross-Domain Diffusion 项目地址: https://gitcode.com/gh_mirrors/wo/Wonder3D Wonder3D是一款革命性的AI工具,能够在短短2-3分钟内将单张2D图片转…...
雪女-斗罗大陆-造相Z-Turbo生成图像的后期处理流水线:从降噪到超分
雪女-斗罗大陆-造相Z-Turbo生成图像的后期处理流水线:从降噪到超分 最近用造相Z-Turbo这类模型生成动漫角色图,比如《斗罗大陆》里的雪女,效果确实挺惊艳的。但不知道你有没有发现,直接生成的图片有时候会有些小瑕疵,…...
FGSM对抗攻击实战:从理论到PyTorch代码的完整攻防演练
1. 对抗攻击入门:为什么你的AI模型会被"骗"? 想象一下,你训练了一个准确率高达99%的手写数字识别模型,但在实际应用中却发现它经常把"3"识别成"8",把"6"识别成"0"。…...
