分布式搜索——ElasticSeach简介

一般都用数据库存储数据,然后对数据库进行查询获取数据,但是当数据量很大时,查询效率就会很慢(具体下面会讲到),所以这种情况下就会使用到ElasticSeach

ElasticSeach的基本介绍

ElasticSeach是一 款非常强大的开源搜索引擎技术 ,可以帮助我们从海量数据中快速找到需要的内容 

在日常生活中,有很多会用到ElasticSeach的场景,比如网购时在输入框输入关键字搜索出来的商品、百度问的问题、订外卖时搜吃的……类似这种在海量数据中搜索查询指定数据的场景,都会用到ElasticSeach

elasticsearch 结合 åkibana 、 Logstash 、 Beats,组件,统称为 elastic stack (ELK) ,其实就是elasticsearch的技术栈。被广泛应用在日志数据分析 、 实时监控等领域

还有其他的搜索引擎技术,不过elasticsearch目前应该是最好用的

正向索引和倒排索引

正向索引

倒排索引 

 ElasticSeach中的一些基本概念

文档

索引和映射

数据库和ElasticSeach对比

利用DSL语句操作ES

 在kibana上通过发送请求进行增删改查操作,关于安装请自行百度,或者参考:elasticsearch和kibana的安装

kibana客户端如下图

索引库的增删改查操作

ES中的索引库,指的就是索引,对应为数据库中表的概念。我们要向数据表中存储数据,首先应该创建表,在创建表时会对表做一些约束,如表中各字段的类型、是否不为空等等。相应的,我们要把文档(前面说过文档类似于表中的一行数据)存储到索引库中,就要先创建索引,同样在创建索引时会对索引做一些约束。

创建好一个带有指定约束的索引A后,这些约束就会在创建文档并把文档存入索引A时起作用,这个过程就叫mapping映射。还是以数据表举例,一个用户表有姓名和年龄两个字段,类型分别为字符串和整形,那么往这个用户表存一条用户数据时,就会校验这条用户数据是否符合用户表的约束,符合的话就是用户数据和用户表的约束是一一映射的(希望我能解释清楚映射的意思,因为我自己一开始不太懂这个概念)。文档和索引的处理过程和用户数据用户表的处理过程很像

mapping映射

创建索引库

删除、查看索引库

修改索引库

文档增删改查操作

新增文档

查看、删除文档

修改文档

利用RestClient操作ES

RestClient简介

操作索引库

具体操作看视频吧,因为是案例不好做笔记,视频里是基于Java语言的操作

 restclient操作ES

操作文档

一样,看视频: 操作文档

elasticsearch查询文档

用DSL查询

query查询分类

查询所有 

精确查询 

 gte表示大于等于,lte表示小于等于,gt表示大于,lt表示小于

 地理查询

方法一,适合地图找房之类的需求 

方法二,适合我的附近这种需求,其中我的就是中心点的位置,附近就是看设置的距离值 

复合查询

function_score 在原始查询结果的基础上,人为干预搜索结果的排名,即决定哪些文档比较靠前,哪些比较靠后

视频 function_score

 

 布尔查询

视频  布尔查询

搜索结果处理

排序

 例子1

例子2:

 

分页

分页默认只能查前10000条数据:具体看视频:分页查询上限

高亮

具体的视频:高亮的用法

对应的RestClient操作参考视频,视频是Java版本的:视频教程

数据聚合

聚合的分类

DSL实现聚合

桶聚合

metrics聚合

自动补全

自动补全就是当我们在搜索引擎或者购物网站的搜索框中输入一个词时,出现的提示,一般通过分词器实现

拼音分词器

自定义分词器

 

 

 实现自动补全

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

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

相关文章

202012青少年软件编程(Python)等级考试试卷(三级)

第 1 题 【单选题】 在Python正则表达式中,用来匹配任意空白字符的是( )。 A 😒 B :S C :d D 😄 正确答案:A 试题解析: 第 2 题 【单选题】 在Python正则表达式中,用来匹配任意非数字字符的是&…

【神经网络与深度学习】Transformer原理

transformer ENCODER 输入部分 对拆分后的语句x [batch_size, seq_len]进行以下操作 Embedding 将离散的输入(如单词索引或其他类别特征)转换为稠密的实数向量,以便可以在神经网络中使用。位置编码 与RNN相比,RNN是一个字一个字…

代码随想录——二叉树的最小深度(Leetcode111)

题目链接 层序遍历 遍历整棵树,当找到一个叶子节点时,直接返回这个叶子节点的深度。 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNod…

C语言 | Leetcode C语言题解之第86题分隔链表

题目: 题解: struct ListNode* partition(struct ListNode* head, int x) {struct ListNode* small malloc(sizeof(struct ListNode));struct ListNode* smallHead small;struct ListNode* large malloc(sizeof(struct ListNode));struct ListNode* …

ELF 1技术贴|如何在Ubuntu上配置Samba服务器

Samba是一个开源的软件套件,提供了一种实现SMB/CIFS协议的方式,可以无缝链接Linux与Windows系统,让开发者在局域网络框架下实现共享文件、打印资源等,确保了数据交流的高效与稳定。 相较于在Ubuntu环境下运用传统的Vim编辑器&…

Wiley数据库文献哪里比较全?去哪里下载比较高效

Wiley出版社1807年创建于美国,是一家具有超过200年历史的全球知名的出版机构,面向专业人士、科研人员、教育工作者、学生、终身学习者提供必需的知识和服务。 Wiley及旗下的子品牌出版了超过500位诺贝尔奖得主的作品。Wiley Online Library为全学科期刊全…

VMware17虚拟机安装Kali Linux2024详解

目录 简介 一、环境搭建 二、下载ISO镜像 三、新建虚拟机 为虚拟机选择合适的操作系统类型和版本 分配适当的内存、硬盘空间和其他虚拟机配置选项 四、硬件配置 编辑虚拟机设置 选择安装介质 五、界面化安装配置 简介 Kali Linux是一个基于Debian的Linux发行版&#…

【Pytorch】9.torch.nn.MaxPool2d

什么是MaxPool2d 是对二维矩阵进行池化层下采样的方法 MaxPool2d的用法 相较于卷积层,多出来的参数为ceil_mode 这个参数代表,如果所剩的部分不够卷积核的大小,要不要进行池化操作 具体代码为 import torch import torchvision from torch …

24长三角数学建模ABC题已出!!!

需要ABC题资料的宝子们可以进企鹅 赛题如下: 赛道 A:“抢救”落水手机 上有天堂,下在苏杭;五一假期,杭州西湖、西溪湿地、京杭大运河等著名 景点,游人如织,作为享誉国内外的旅游胜地&#xff0…

QT:QML中读取文件(QDesktopServices和QFile)

目录 一.介绍 二.QDesktopServices: 1.添加头文件 2.声明函数 3.操作 4.注册 5.qml调用 三.QFile: 1.添加头文件 2.声明函数 3.读取指定文件名的文件内容 4.注册 5.qml中调用 四.效果展示: 1.QDesktopServices:上方按钮点击打开…

华为OD机试 - 山峰个数(Java 2024 C卷 100分)

华为OD机试 2024C卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试(JAVA)真题(A卷B卷C卷)》。 刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试…

使用TerraScan静态扫描KubernetsIaC文件

terrascan https://github.com/tenable/terrascan Terrascan 是基础架构即代码的静态代码分析器。Terrascan 允许: 将基础架构作为代码无缝扫描,以查找错误配置。监控已配置的云基础架构,以查找引入终端安全评估漂移的配置更改&#xff0…

k8s证书续期

证书即将到期了如何进行证书续签 k8s版本V1.23.6 1.查看证书期限 kubeadm certs check-expiration如果证书即将到期,此处的天数应该是几天,在过期之前进行续期,保证集群的可用 2. 备份证书 避免出现问题可以回退 cp -r /etc/kubernetes …

Swift知识点(三)

11. init、deinit、可选链、协议、元类型 构造和析构 构造方法 构造方法是一种特殊的方法 一个对象创建完毕后,都需要调用构造方法进行初始化(比如属性的初始化) 验证:init方法是在对象创建完毕的时候调用 回到存储属性 在对…

【全开源】国际版JAVA游戏陪玩系统源码陪练APP源码H5源码电竞系统源码支持Android+IOS+H5

国际版游戏陪玩系统:连接全球玩家的桥梁 在数字化时代,游戏已成为全球范围内跨越文化和地域的桥梁。随着游戏产业的蓬勃发展,玩家们对于游戏体验的需求也日益多样化。为了满足这一市场需求,我们隆重推出“国际版游戏陪玩系统”&a…

electron的Remote模块

03 【electron的Remote模块】 在渲染进程里(比如index.html里面加载了一些js文件,那里面的js如果要使用到 BrowserWindow 这些属性的话就必须使用 remote) 使用 remote 模块, 你可以调用 main 进程对象的方法 1.electron14.0之前版本使用 …

【微信小程序开发(从零到一)【婚礼邀请函】制作】——邀请函界面的制作(2)

👨‍💻个人主页:开发者-曼亿点 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 曼亿点 原创 👨‍💻 收录于专栏&#xff1a…

一篇文章拿下 Redis缓存穿透,缓存击穿,缓存雪崩

文章目录 ☃️缓存击穿❄️❄️解决方案一、使用锁❄️❄️解决方案二、逻辑过期方案❄️❄️解决方案三、永不过期 主动更新❄️❄️解决方案四、接口限流❄️❄️实战❄️❄️❄️利用互斥锁解决缓存击穿问题❄️❄️❄️利用逻辑过期解决缓存击穿问题 ☃️缓存穿透❄️❄️缓…

【python】将json内解码失败的中文修改为英文(‘utf-8‘ codec can‘t decode,labelme标注时文件名未中文)

出现问题的场景: 语义分割数据集,使用labelme工具进行标注,然后标注图片存在中文名,导致json标签文件写入中文图片名,从而解析失败。 代码解析json文件时,出现报错: python脚本需求&#x…

org.postgresql.util.PSQLException: 错误: 关系 “dual“ 不存在

springboot 项目连接 postgreps,启动时报错 org.postgresql.util.PSQLException: 错误: 关系 "dual" 不存在。 查阅资料后发现这是由配置文件中的配置 datasource-dynamic-druid-validationQuery 导致的 spring:datasource:druid:stat-view-servlet:ena…