Elasticsearch(一)---介绍
简介
Elasticsearch是一个基于Lucene的实际的分布式搜索和分析引擎。设计用于云计算中,能够达到近实时搜索,稳定,可靠,快速,安装使用方便。基于RESTful接口。
官网地址:Elasticsearch 平台 — 大规模查找实时答案 | Elastic
ES与solr的对比:
接口
类似webservice的接口 solr
REST风格的访问接口 es
分布式存储
solrCloud solr4.x才支持
es是为分布式而生的
支持的格式
solr xml json
es json


倒排索引
lucene
例如:我们有两个文档:
The quick brown fox jumped over the lazy dog
Quick brown foxed leap over lazy dogs in summer
我们首先将每个文档进行分词,创建一个对唯一词语有序的列表,
对每个词在哪些文档中出现过的文档列表。

如右图所示:
Doc_1:
The quick brown fox jumped over the lazy dog
Doc_2:
Quick brown foxed leap over lazy dogs in summer
现在我们查询quick brown,我们只需要知道这个词在哪些文档出现过:
如果我们使用简单的相似性算法,比如说将每个文档匹配的词语数相加,我们就能看出来第一个文档更加匹配,比第二个文档更加符合我们的查询条件:quick brown。

优化:
1、Quick可以全小写,则和quick一样
2、foxes转换为原型fox。dogs变为dog
3、jumped和leap是同义词,都看成jump
倒排索引变为:
此时,如果我们在将查询条件使用相同的流程进行转换则两个文档都能匹配上了。
进行分词和同义词等操作称为“分析”。

倒排索引
关键字 对应的文档 每个文档的tf-idf的值(相关度得分) 每个文档中关键字出现的位置以及偏移量(为了做高亮)
Hello doc1:10:56~60,doc2:11:56~60,doc3:9:56~60,doc4:4:56~60
word doc1:10:56~60,doc2:11:56~60,doc3:9:56~60,doc4:4:56~60
tom doc1:10:56~60,doc2:11:56~60,doc3:9:56~60,doc4:4:56~60
hadoop doc1:10:56~60,doc2:11:56~60,doc3:9:56~60,doc4:4:56~60
一个HTML页面
lucene的倒排索引占文档的20%~30%
100GB 20G~30G
索引的过程
获取文档,并将文档进行分词
计算每个词的相关程度
计算每个词在词条中的位置和偏移量
。。。
搜索的过程
获取用户的输入
分词
到倒排索引中对词语进行查找,并按照词语相关度做倒序排列
将结果返回给用户。
ES优点:(了解)
- 分布式:ES的自动发现机制会识别新增的节点并重新平衡分配数据。
 - 全文检索:ES后台使用Lucene提供全文检索,自带多语言支持、强大的查询语言、地理位置支持、上下文感知的建议、自动完成和搜索片段
 - 近实时搜索和分析:数据从进入ES到能够搜索到是近实时的。除了搜索,ES也可以进行聚合分析操作。
 - 高可用:ES会自动发现新的或失败的节点,重组和重新平衡数据,确保数据是安全的和可访问的。
 - 模式自由:ES的动态Mapping机制可以自动检测数据的结构和类型,创建索引,并使数据可搜索。
 - RESTful API:几乎任何操作都可以使用一个简单的RESTful API,JSON基于HTTP请求来实现,客户端也可以使用多种编程语言。
 
应用场景(了解)
- 站内搜索:京东、淘宝、论坛等的站内搜索
 - NoSQL数据库:ES读写性能优于MongoDB,同时也支持地理位置查询
 - 日志分析:日志分析由实时日志分析平台ELK完成,能够对日志进行集中的收集、存储、搜索、分析、监控以及可视化。
 
如何索引文档(理解)
为新增的文档创建倒排索引
默认情况下,当索引一篇文档的时候,系统首先根据文档ID的散列值选择一个主分片,并将文档发送到该主分片。这份主分片可能位于另一个节点。然后文档被发送到该主分片的所有副本分片进行索引,副本分片和主分片之间保持数据的同步。
如何检索文档(理解)
在默认情况下,搜索请求通过round-robin轮询机制选中主分片和副本分片,其假设集群中所有的节点是同样快的。
接收客户端请求的分片节点会创建一个空的优先级队列并且配置好分页参数from与size。
该节点将检索请求发送给该索引中个每一个shard(无论是primary还是replica,可以构成一个完整的索引数据)。每个shard在本地执行检索,并将结果添加到本地优先级队列中。
每个shard返回本地优先级序列中所记录的_id与sort值,并发送给接收客户端请求的节点,该节点将这些值合并到自己的本地的优先级队列中,并做全局的排序,返回给客户端。
脑裂问题(理解)
1. 网络:由于是内网通信,网络通信问题造成某些节点认为master死掉,而另选master的可能性较小
2. 节点负载:由于master节点与data节点都是混合在一起的,所以当工作节点的负载较大时,导致对应的ES实例停止响应,而这台服务器如果正充当着master节点的身份,那么一部分节点就会认为这个master节点失效了,故重新选举新的节点,这时就出现了脑裂;同时由于data节点上ES进程占用的内存较大,较大规模的内存回收操作也能造成ES进程失去响应。fullGC stop the world
解决方式:
主节点
node.master: true
node.data: false
从节点
node.master: false
node.data: true
所有节点
discovery.zen.ping.multicast.enabled: false
discovery.zen.ping.unicast.hosts: [“master”, “slave1”, “slave2"]
discovery.zen.minimum_master_nodes: 2
单播:点对点通信,不是吼一嗓子,而是悄悄的问,谁是我兄弟
多播:吼一嗓子,谁是我兄弟,大家可以同时听到
相关文章:
Elasticsearch(一)---介绍
简介 Elasticsearch是一个基于Lucene的实际的分布式搜索和分析引擎。设计用于云计算中,能够达到近实时搜索,稳定,可靠,快速,安装使用方便。基于RESTful接口。 官网地址:Elasticsearch 平台 — 大规模查找…...
Vscode LinuxC++环境配置
C环境配置 文章目录 C环境配置一、Visual Studio Code相关信息二、Python开发环境配置三、C 开发环境配置四、第一个C程序五、附录:vs code 中变量解释 一、Visual Studio Code相关信息 Visual Studio Code 下载地址:https://code.visualstudio.com/dow…...
【tensorboard打开失败】No dashboards are active for the current data set.
这里我再跟视频学的时候,找了很多的指令,说是对应版本不一样,但是发现用了很多指令都可以弹出来跳转的url,那应该就不是输入指令的问题 直到我想把logs里面的文件删掉重新跑的时候,我突然注意到这里有中文字符…...
客服管理者如何调动客服人员的积极性?
客户是企业的财富,良好的客户服务体验可以有效地促进企业的销售和声誉,因此,客服工作显得尤为重要。而客服人员的积极性直接影响了整个客服部门的质量和效率。如何调动客服人员的积极性,成为了每个客服管理者都需要面对的难题。本…...
Jenkins自动化部署简单配置
下载安装jenkins 安装Jenkins步骤 点击Next的时候会有jdk版本跟Jenkins版本不符合的情况 1. 看下任务管理器内Jenkins服务是否启动,在浏览器里面输入localhost:2023(端口号是安装时输入的) 2. 根据路径找到放置密码的文件(C…...
Linux————内置命令大全
(一)内置命令 Shell 内置命令,就是由 Bash Shell 自身提供的命令,而不是文件系统中的可执行脚本文件。内置命令的执行速度通常优于外部命令,因为执行外部命令不仅会导致磁盘I/O操作,而且还需要为其fork一个…...
从用户角度出发,如何优化大数据可视化体验|北京蓝蓝UI设计公司
作者:蓝蓝设计-鹤鹤 大数据已经成为人们探索世界的新工具。但是,对于普通用户而言,大数据往往比较抽象和难以理解,因此,大数据可视化作为一种非常有效的工具工具被广泛应用。然而,在实际应用中,…...
【vue】封装树形下拉框组件 el-popover+el-tree+el-select
父组件使用 <template><div>{{ array }} 更多属性详见wgyTreeSelect组件<wgyTreeSelectv-model"array":list"list":multiple"true":disabled-ids"[111,113,2]"/></div> </template><script> /*…...
docker安装Kafka,SpringBoot整合Kafka
#拉取镜像 docker pull wurstmeister/zookeeper #运行容器 docker run --restartalways --name zookeeper -p 2181:2181 \ -v /etc/localtime:/etc/localtime -d wurstmeister/zookeeper#拉取镜像 docker pull wurstmeister/kafka#运行容器 docker run --restartalways --name …...
MySQL - InnoDB 的事务支持、锁机制
InnoDB 存储引擎实现了强大的事务支持和锁机制: 事务原理: ACID 属性:InnoDB 支持 ACID(原子性、一致性、隔离性、持久性)属性,确保数据的一致性和可靠性。事务是一组 SQL 操作,要么全部执行&…...
Android Studio的笔记--Module新建和使用
Module新建和使用 新建module使用module android studio 中module的建立和使用。比如修改工程为module的步骤,引用module的步骤。 新建module 1、新建android工程,New Project.包名为com.lxh.serialport 2、修改工程为module。 2.1、在app下的build.pro…...
Git统计个人提交代码行数
目录 一、git bash打开二、查看个人提交的代码行数统计三、查看项目每个人提交的代码行数统计四、查询所有用户的提交总次数五、统计用户一段时间内的提交代码量 在实际开发中,常常会想查看自己对于某个项目的贡献,管理者会查看项目下各成员的贡献&#…...
Collction的List方法,list特有方法,遍历方式,迭代器选择
[to] list特有方法 //插入指定元素//list.add(1,"ddd");//System.out.println(list);//[aaa, ddd, bbb, ccc]//这个表示在一索引的位置插入ddd//他会把原来一索引位置的元素往后移动一位在添加//删除指定元素//String remove list.remove(1);//System.out.println(…...
奇偶校验码和循环冗余码
在数据链路层的传输中,1可能变成0,0可能变成1,这是比特差错。 为了应对比特差错,有两种方式,即自动重传请求ARQ(Automatic Repeat-reQuest)和前向纠错FEC(Forward Error Correction&…...
Recommender System复习(考试向)
Recommender System Review OverviewCollaborative Filtering基于用户的CF(User CF)基于物品的CF(Item CF)Similarity CalculationBias in CF Evaluation of Recommender SystemFactorization MachinesLatent factor modelLFM算法…...
SpringBoot绑定配置文件中变量的四种方式-解析
当在Spring Boot中需要绑定配置文件中的变量时,可以使用以下注解: PropertySource:用于指定要加载的属性文件。可以将该注解放置在Configuration类上。 Configuration PropertySource("classpath:application.properties") public…...
linux 安装 elasticsearch 全教程
一、去 elasticsearch官网找到Linux版本的下载链接 地址https://www.elastic.co/cn/downloads/elasticsearch 二、在linux 中用wget下载 wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.10.4-linux-x86_64.tar.gz三、下载成功后解压文件 tar -x…...
更快更准 | YOLOv3算法超详细解析(包括诞生背景+论文解析+技术原理等)
前言:Hello大家好,我是小哥谈。YOLOv3是一种基于深度学习的目标检测算法,它可以快速而准确地在图像中检测出多个目标。它是由Joseph Redmon和Ali Farhadi在2018年提出的,是YOLO(You Only Look Once)系列算法…...
【ChatGPT】教我 Flyweight(享元) 模式
文章目录 设计模式中 Flyweight 模式,实际应用场景有哪些?我需要画很多的树,以这个需求为例来教我 Flyweight 模式。好的,我大概明白了,我还有点疑惑,请问外在状态和内在状态是哪些?你可以讲一下…...
双十一越来越早,公域电商何去何从——深度解析
为什么双十一越来越早?传统的公域电商越来越饱和,某淘某东甚至和某79元网红打起了价格战 ,市面上标品越来越多,商家越来越多,买东西的变少了,商家越卖越便宜。 公域电商: 就像一个大市场。里面摆满了各种商…...
Linux应用开发之网络套接字编程(实例篇)
服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …...
【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器
——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的一体化测试平台,覆盖应用全生命周期测试需求,主要提供五大核心能力: 测试类型检测目标关键指标功能体验基…...
STM32F4基本定时器使用和原理详解
STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...
大语言模型如何处理长文本?常用文本分割技术详解
为什么需要文本分割? 引言:为什么需要文本分割?一、基础文本分割方法1. 按段落分割(Paragraph Splitting)2. 按句子分割(Sentence Splitting)二、高级文本分割策略3. 重叠分割(Sliding Window)4. 递归分割(Recursive Splitting)三、生产级工具推荐5. 使用LangChain的…...
测试markdown--肇兴
day1: 1、去程:7:04 --11:32高铁 高铁右转上售票大厅2楼,穿过候车厅下一楼,上大巴车 ¥10/人 **2、到达:**12点多到达寨子,买门票,美团/抖音:¥78人 3、中饭&a…...
Axios请求超时重发机制
Axios 超时重新请求实现方案 在 Axios 中实现超时重新请求可以通过以下几种方式: 1. 使用拦截器实现自动重试 import axios from axios;// 创建axios实例 const instance axios.create();// 设置超时时间 instance.defaults.timeout 5000;// 最大重试次数 cons…...
图表类系列各种样式PPT模版分享
图标图表系列PPT模版,柱状图PPT模版,线状图PPT模版,折线图PPT模版,饼状图PPT模版,雷达图PPT模版,树状图PPT模版 图表类系列各种样式PPT模版分享:图表系列PPT模板https://pan.quark.cn/s/20d40aa…...
企业如何增强终端安全?
在数字化转型加速的今天,企业的业务运行越来越依赖于终端设备。从员工的笔记本电脑、智能手机,到工厂里的物联网设备、智能传感器,这些终端构成了企业与外部世界连接的 “神经末梢”。然而,随着远程办公的常态化和设备接入的爆炸式…...
Typeerror: cannot read properties of undefined (reading ‘XXX‘)
最近需要在离线机器上运行软件,所以得把软件用docker打包起来,大部分功能都没问题,出了一个奇怪的事情。同样的代码,在本机上用vscode可以运行起来,但是打包之后在docker里出现了问题。使用的是dialog组件,…...
NPOI操作EXCEL文件 ——CAD C# 二次开发
缺点:dll.版本容易加载错误。CAD加载插件时,没有加载所有类库。插件运行过程中用到某个类库,会从CAD的安装目录找,找不到就报错了。 【方案2】让CAD在加载过程中把类库加载到内存 【方案3】是发现缺少了哪个库,就用插件程序加载进…...
