SpringCloud微服务04-Elasticsearch-DSL查询-聚合

一、Elasticsearch

搜索引擎,响应速度非常快,特别是对大数据量的情况

1.初始elasticsearch

 

如果只需要商品搜索,百度这种搜索网站,只需要第二个就够了

docker部署:day08-Elasticsearch - 飞书云文档 (feishu.cn)

es是restful的接口,只要发http请求就可以访问到它。

想要可视化还要安装Kibana:

由于es直接使用http请求访问接口,不方便记不住路径,使用kibana:

Tools有提示,且方便

①倒排索引

使用id索引搜索的话它把id放入B+树,可以很快查询到目标,但是不使用id且模糊搜索就会一条一条进行判断,速度很慢

两次搜索,第一次是目标分词后的文档id,再根据文档id查询到所需目标

②IK分词器

中文语义没有空格,分词外国人干不好

ik中包含了词典,ik会遍历你的句子两个两个遍历词典中有就是一个词,然后三个三个

词典可能已经落后了,自定义词典后就可以被分词了

③基础概念

它会把相同类型的放入一起,可以称为索引库

dsl就是类似之前查询分词结果的搜索方式:使用JSON语句进行搜索

2.索引库操作

①Mapping映射属性

字符串中keyword指那些不能被分词的内容,分词了就没有意义了:例如比亚迪
有根据它搜索和排序的需求就需要设置index为true
analzer是有分词的需求
properties是会有嵌套的属性

②索引库操作

3.文档操作

①文档CRUD

新增:

修改一种是使用PUT,如果存在id它会删除原来的再添加
如果需要只修改某些字段就采用POST

②批处理

这里可以一次进行多次增删改

4.JavaRestClient

在java中向es发送请求

①客户端初始化

②商品Mapping映射

PUT /items
{
  "mappings": {
    "properties": {
      "id": {
        "type": "keyword"
      },
      "name":{
        "type": "text",
        "analyzer": "ik_max_word"
      },
      "price":{
        "type": "integer"
      },
      "stock":{
        "type": "integer"
      },
      "image":{
        "type": "keyword",
        "index": false
      },
      "category":{
        "type": "keyword"
      },
      "brand":{
        "type": "keyword"
      },
      "sold":{
        "type": "integer"
      },
      "commentCount":{
        "type": "integer",
        "index": false
      },
      "isAD":{
        "type": "boolean"
      },
      "updateTime":{
        "type": "date"
      }
    }
  }
}

③索引库操作

其中MAPPING_TEMPLATE就是这个请求中的参数,请求参数放入“”中

④文档操作

新增文档:

mysql中有商品数据,可以从中取出来放入es

删除文档:

查询文档

使用hutu工具包可以将json类容转化为对象

修改文档:

⑤批处理

二、Elasticsearch查询

1.DSL查询

①快速入门

响应结果中并不会包含索引库中的所有文档,而是仅有10条。这是因为处于安全考虑,elasticsearch设置了默认的查询页数。

②叶子查询

全文检索就是之前提到的倒排索引

全文检索:

第二个意思是查询“FIELD1”,“FIELD2”中是否有TEXT的内容

全文检索会给结果进行打分,分越高就代表匹配度越高

精确查询:

③复合查询

must和should参与算分,filter也是与但是不参与算分

④排序和分页

排序

分页

深度分页

要找出前1000名就需要每一片的1000名拿出来进行排序得到全部的1000名。

但是这样就出现一个问题,搜索数据量越大,我要10000名就得每片都去排出前10000名

search after就是每一页排序后,拿到最后的排序值,第二页可以就根据这个排序值重新开始查找高于或低于这个排序值的目标,这样每一页都是重新开始查询,就不会出现深度查询

但是不适合随机翻页,原始查询就会设置页码上限避免深度分页

⑤高亮显示

2.JavaRestClient

①快速入门

source中就是构建查询条件

QueryBuilders包含了所有的查询细节

②构建查询条件

全文检索:

精确查询:

复合查询(bool):

③排序和分页

④高亮显示

3.数据聚合

①DSL聚合

Bucket聚合

size会返回这个大小的目标,数量最多的才会显示

度量聚合

②RestClient聚合

聚合三要素:聚合类型,聚合名称,聚合字段

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

有趣的css - 移形换位加载动画

大家好,我是 Just,这里是「设计师工作日常」,今天分享的是一个移形换位动态加载小动效,适用于 app 列表加载,页面加载或者图片懒加载等场景。 最新文章通过公众号「设计师工作日常」发布。 目录 整体效果核心代码html…

python基础之循环

目录 1.while 循环 2.for循环 3.for-else 和 while-else 4.关键字break和continue 1.while 循环 语法结构 while 条件语句:代码 解释:不断循环,如果条件语句为真,则执行代码,直到条件语句为假。假设条件语句一直为真&#xff0…

智能体(Agent)详细精讲

1.什么是智能体 智能体(Agent)是一种由大规模语言模型(如GPT-4或本地模型)驱动的先进系统,能够执行多种复杂任务。通过引入智能体,企业和个人可以实现自动化处理和高效管理各种事务。 智能体的核心是其“大…

ATmega328P加硬件看门狗MAX824L看门狗

void Reversewdt(){ //硬件喂狗,11PIN接MAX824L芯片WDIif (digitalRead(11) HIGH) {digitalWrite(11, LOW); //低电平} else {digitalWrite(11, HIGH); //高电平 }loop增加喂狗调用 void loop() { …… Reversewdt();//喂狗 }

❤Element的使用element

❤Element的使用 1、input输入框 禁止自动补全和下拉提示 input 输入框在输入后浏览器会记录用户输入的值,在下次输入的时候会将记录的值提示在输入框的下面,当输入框是密码的时候,这样可以看见上次输入的密码,这样用户体验不好…

2024全新Langchain大模型AI应用与多智能体实战开发

2024全新Langchain大模型AI应用与多智能体实战开发 LangChain 就是一个 LLM 编程框架,你想开发一个基于 LLM 应用,需要什么组件它都有,直接使用就行;甚至针对常规的应用流程,它利用链(LangChain中Chain的由来)这个概念…

[Linux]Crond任务调度以及at任务调度

一.crond任务定时调度 crond是反复检测执行的,一个任务结束后,在所规定的时间之后会再次执行 crontab 指令可以给系统分配定时任务 crontab -e 进入编辑页面,设定任务 crontab -l 查看已有定时任务 crontab -r 删除所有任务 编辑时&#xff…

深度学习之基于MTCNN+Facenet的人脸识别身份认证系统

欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 一、项目背景与意义 随着信息技术的快速发展,身份认证技术在日常生活和工作中的重要性日益凸显。传统的…

【全部更新完毕】2024电工杯B题详细思路代码成品文章教学:大学生平衡膳食食谱的优化设计及评价

大学生平衡膳食食谱的优化设计及评价 摘要 大学阶段是学生获取知识和身体发育的关键时期,也是形成良好饮食习惯的重要阶段。然而,当前大学生中存在饮食结构不合理和不良饮食习惯的问题,主要表现为不吃早餐或早餐吃得马虎,经常食用…

Python文件和数据格式化-课后作业[python123题库]

文件和数据格式化-课后作业 一、单项选择题 1、文件句柄f,以下是f.seek(0)作用的是:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪…

如何从http免费升级到https

使用https协议开头是为了在用户访问网站时提供更安全的网络环境。相比http,使用https有数据加密、身份验证、保护隐私、搜索引擎优化等优势。一般获取https证书,则需要支付费用给证书颁发机构(CA)。还有一些免费的证书证书颁发机构…

嵌入式单片机启动地址映射关系

一、内核只会从0地址启动 1.0地址第一个字是sp栈指针,第二个字是Reset_Handler入口,参考图1中启动代码中的中断向量表。具体使用流程参考图2(参考自野火) 图1 图2 2.0地址映射以后,软件上使用0地址访问的空间是映射到的器件的空间 3.0地址映射只会影响单个器件上的地址,…

知识图谱数据预处理笔记

知识图谱数据预处理笔记 0. 引言1. 笔记1-1. \的转义1-2. 特殊符号的清理1-3. 检查结尾是否正常1-4. 检查<>是否存在1-5. 两端空格的清理1-6. 检查object内容长时是否以<开始 0. 引言 最近学习知识图谱&#xff0c;发现数据有很多问题&#xff0c;这篇笔记记录遇到的…

数据可视化

目录 数据可视化: 常见的数据可视化库: Echarts 使用五步曲 Echarts 相关配置 数据可视化: 应对现在数据可视化趋势,越来越多企业需要在很多场景(营销数据,生产数据,用户数据)下使用,可视化图表来展示体现数据,让数据更加直观,数据特点更加突出 主要目的:借助于…

小红书-社区搜索部 (NLP、CV算法实习生) 一面面经

&#x1f604; 整个流程按如下问题展开&#xff0c;用时60min左右面试官人挺好&#xff0c;前半部分问问题&#xff0c;后半部分coding一道题。 各位有什么问题可以直接评论区留言&#xff0c;24小时内必回信息&#xff0c;放心~ 文章目录 1、自我介绍2、介绍下项目&#xff…

Node.js知识点以及案例总结

思考&#xff1a;为什么JavaScript可以在浏览器中被执行 每个浏览器都有JS解析引擎&#xff0c;不同的浏览器使用不同的JavaScript解析引擎&#xff0c;待执行的js代码会在js解析引擎下执行 为什么JavaScript可以操作DOM和BOM 每个浏览器都内置了DOM、BOM这样的API函数&#xf…

好用的window粘贴板

可以设置指定的快捷键&#xff0c;在需要使用最近复制的记录时快速的复用 -> Ditto。 选择Download即可 地址&#xff1a;Ditto clipboard manager (sourceforge.io)https://ditto-cp.sourceforge.io/

SwiftUI中的组合动画(Simultaneous, Sequenced, Exclusive)

了解了常见的几种手势后&#xff0c;接下来我们了解一下组合手势的操作&#xff0c;当一个视图存在多个手势的时候&#xff0c;为了避免手势冲突&#xff0c;SwiftUI提供了自定义手势的方法&#xff0c;比如同时进行&#xff0c;顺序进行等等。 以下是一些常见的多种手势组合使…

集创北方ICN6211 MIPIDSI桥接到RGB,支持RGB565/RGB888/RGB666

ICN6211描述&#xff1a; ICN6211是一个桥接芯片&#xff0c;它接收MIPIDSI输入并发送RGB输出。MIPIDSI最多支持4个车道&#xff0c;每个车道的最大运行频率为1Gbps&#xff1b;总最大输入带宽为4Gbps&#xff1b;并且还支持MIPI定义的ULPS&#xff08;超低功耗状态&#xff0…

计算机网络基础 - 计算机网络和因特网(1)

计算机网络基础 计算机网络和因特网什么是 Internet?具体构造的的角度服务角度网络结构 网络边缘网络核心电路交换分组交换概述排队时延和分组丢失转发表和路由选择协议按照有无网络层的连接 分组交换 VS 电路交换 接入网DSL 因特网接入电缆因特网接入光纤到户 FTTH无线接入网…