当前位置: 首页 > news >正文

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优点:(了解)

  1. 分布式:ES的自动发现机制会识别新增的节点并重新平衡分配数据。
  2. 全文检索:ES后台使用Lucene提供全文检索,自带多语言支持、强大的查询语言、地理位置支持、上下文感知的建议、自动完成和搜索片段
  3. 近实时搜索和分析:数据从进入ES到能够搜索到是近实时的。除了搜索,ES也可以进行聚合分析操作。
  4. 高可用:ES会自动发现新的或失败的节点,重组和重新平衡数据,确保数据是安全的和可访问的。
  5. 模式自由:ES的动态Mapping机制可以自动检测数据的结构和类型,创建索引,并使数据可搜索。
  6. RESTful API:几乎任何操作都可以使用一个简单的RESTful API,JSON基于HTTP请求来实现,客户端也可以使用多种编程语言。

应用场景(了解)

  1. 站内搜索:京东、淘宝、论坛等的站内搜索
  2. NoSQL数据库:ES读写性能优于MongoDB,同时也支持地理位置查询
  3. 日志分析:日志分析由实时日志分析平台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里面的文件删掉重新跑的时候,我突然注意到这里有中文字符&#xf…...

客服管理者如何调动客服人员的积极性?

客户是企业的财富,良好的客户服务体验可以有效地促进企业的销售和声誉,因此,客服工作显得尤为重要。而客服人员的积极性直接影响了整个客服部门的质量和效率。如何调动客服人员的积极性,成为了每个客服管理者都需要面对的难题。本…...

Jenkins自动化部署简单配置

下载安装jenkins 安装Jenkins步骤 点击Next的时候会有jdk版本跟Jenkins版本不符合的情况 1. 看下任务管理器内Jenkins服务是否启动,在浏览器里面输入localhost:2023(端口号是安装时输入的) 2. 根据路径找到放置密码的文件(C…...

Linux————内置命令大全

(一)内置命令 Shell 内置命令,就是由 Bash Shell 自身提供的命令,而不是文件系统中的可执行脚本文件。内置命令的执行速度通常优于外部命令,因为执行外部命令不仅会导致磁盘I/O操作,而且还需要为其fork一个…...

从用户角度出发,如何优化大数据可视化体验|北京蓝蓝UI设计公司

作者:蓝蓝设计-鹤鹤 大数据已经成为人们探索世界的新工具。但是,对于普通用户而言,大数据往往比较抽象和难以理解,因此,大数据可视化作为一种非常有效的工具工具被广泛应用。然而,在实际应用中&#xff0c…...

【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 存储引擎实现了强大的事务支持和锁机制&#xff1a; 事务原理&#xff1a; ACID 属性&#xff1a;InnoDB 支持 ACID&#xff08;原子性、一致性、隔离性、持久性&#xff09;属性&#xff0c;确保数据的一致性和可靠性。事务是一组 SQL 操作&#xff0c;要么全部执行&…...

Android Studio的笔记--Module新建和使用

Module新建和使用 新建module使用module android studio 中module的建立和使用。比如修改工程为module的步骤&#xff0c;引用module的步骤。 新建module 1、新建android工程&#xff0c;New Project.包名为com.lxh.serialport 2、修改工程为module。 2.1、在app下的build.pro…...

Git统计个人提交代码行数

目录 一、git bash打开二、查看个人提交的代码行数统计三、查看项目每个人提交的代码行数统计四、查询所有用户的提交总次数五、统计用户一段时间内的提交代码量 在实际开发中&#xff0c;常常会想查看自己对于某个项目的贡献&#xff0c;管理者会查看项目下各成员的贡献&#…...

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(…...

奇偶校验码和循环冗余码

在数据链路层的传输中&#xff0c;1可能变成0&#xff0c;0可能变成1&#xff0c;这是比特差错。 为了应对比特差错&#xff0c;有两种方式&#xff0c;即自动重传请求ARQ&#xff08;Automatic Repeat-reQuest&#xff09;和前向纠错FEC&#xff08;Forward Error Correction&…...

Recommender System复习(考试向)

Recommender System Review OverviewCollaborative Filtering基于用户的CF&#xff08;User CF&#xff09;基于物品的CF&#xff08;Item CF&#xff09;Similarity CalculationBias in CF Evaluation of Recommender SystemFactorization MachinesLatent factor modelLFM算法…...

SpringBoot绑定配置文件中变量的四种方式-解析

当在Spring Boot中需要绑定配置文件中的变量时&#xff0c;可以使用以下注解&#xff1a; PropertySource&#xff1a;用于指定要加载的属性文件。可以将该注解放置在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算法超详细解析(包括诞生背景+论文解析+技术原理等)

前言&#xff1a;Hello大家好&#xff0c;我是小哥谈。YOLOv3是一种基于深度学习的目标检测算法&#xff0c;它可以快速而准确地在图像中检测出多个目标。它是由Joseph Redmon和Ali Farhadi在2018年提出的&#xff0c;是YOLO&#xff08;You Only Look Once&#xff09;系列算法…...

【ChatGPT】教我 Flyweight(享元) 模式

文章目录 设计模式中 Flyweight 模式&#xff0c;实际应用场景有哪些&#xff1f;我需要画很多的树&#xff0c;以这个需求为例来教我 Flyweight 模式。好的&#xff0c;我大概明白了&#xff0c;我还有点疑惑&#xff0c;请问外在状态和内在状态是哪些&#xff1f;你可以讲一下…...

双十一越来越早,公域电商何去何从——深度解析

为什么双十一越来越早&#xff1f;传统的公域电商越来越饱和,某淘某东甚至和某79元网红打起了价格战 &#xff0c;市面上标品越来越多&#xff0c;商家越来越多&#xff0c;买东西的变少了&#xff0c;商家越卖越便宜。 公域电商&#xff1a; 就像一个大市场。里面摆满了各种商…...

2026年玉米膨化机市场:谁是真正的行业领航者?

面对快速发展的休闲食品市场&#xff0c;如何在竞争激烈的玉米膨化机市场里抢占先机&#xff1f;随着消费者对健康食品需求的高涨&#xff0c;五谷杂粮膨化食品逐渐成为市场上的一股热潮。本篇将深度解析2026年玉米膨化机行业的趋势、选购要点&#xff0c;并对比测评几个行业知…...

新手创业是注册公司好还是注册个体户好?

很多刚准备创业的朋友&#xff0c;最先纠结的问题就是&#xff1a;我到底是注册个体工商户&#xff0c;还是直接注册有限公司&#xff1f;一、先搞懂最核心的本质区别个体户属于个人经营模式&#xff0c;承担无限连带责任&#xff0c;简单说就是生意出问题&#xff0c;个人资产…...

终极AI自瞄系统:5分钟搭建你的智能游戏瞄准助手

终极AI自瞄系统&#xff1a;5分钟搭建你的智能游戏瞄准助手 【免费下载链接】RookieAI_yolov8 基于yolov8实现的AI自瞄项目 AI self-aiming project based on yolov8 项目地址: https://gitcode.com/gh_mirrors/ro/RookieAI_yolov8 还在为游戏中的精准瞄准而烦恼吗&…...

收藏干货:MySQL/PG/人大金仓/达梦语法差异对照表

&#x1f4cc; 专栏&#xff1a;国产数据库信创实战&#x1f516; 标签&#xff1a; #数据库语法差异 #MySQL转人大金仓 #MySQL转达梦 #PG语法适配 #信创数据库迁移 #SQL兼容改造 #国产数据库适配 #SpringBoot3数据库适配&#x1f4dd; 文章摘要信创国产化迁移过程中&#xff0…...

除了连接模拟器,AppInventor开发者还应该知道的3个‘坑’:录音、短信模块与API调用限制

避开AppInventor开发中的三大隐形陷阱&#xff1a;录音、短信与API调用实战指南 当你成功连接AppInventor模拟器&#xff0c;准备大展拳脚开发应用时&#xff0c;可能会突然发现某些功能"神秘失效"——录音按钮点击无反应、短信发送模块形同虚设、API调用慢如蜗牛。这…...

Google I/O 2026 第二天:Gemini 3.5 实测性能深度解析与 Android XR 生态全景

摘要&#xff1a;Google I/O 2026 大会进入第二天&#xff0c;技术社区开始深度实测 Gemini 3.5 Pro 代号「Cappuccino」。本文汇总第一天 Keynote 后的实测数据&#xff1a;Gemini 3.5 Pro 编程能力达 GPT-5.5 的 92%&#xff0c;成本仅为其 1/8&#xff1b;Gemini 3.5 Flash …...

别再死记硬背了!用这个班级排名的例子,5分钟搞懂R语言dplyr包的四种join函数

班级运动会排名解析&#xff1a;用生活案例彻底掌握R语言dplyr连接函数 刚接触R语言的数据合并操作时&#xff0c;那些inner_join、left_join的术语总让人望而生畏。但数据连接的本质&#xff0c;其实就像学校运动会后整理各班成绩一样简单。想象你手上有两个班级的排名表和运动…...

智能门锁语音方案:WTVXXX-32N芯片一体化设计与低功耗实现

1. 项目概述&#xff1a;当智能门锁遇上“会说话”的芯片最近在做一个智能门锁的后板方案整合项目&#xff0c;客户提了个挺有意思的需求&#xff1a;他们希望门锁在完成每一次开锁、上锁、或者遇到异常情况时&#xff0c;不仅能通过手机APP推送通知&#xff0c;还能在现场给用…...

CANN/catlass精度分析基础

精度分析基础 【免费下载链接】catlass 本项目是CANN的算子模板库&#xff0c;提供NPU上高性能矩阵乘及其相关融合类算子模板样例。 项目地址: https://gitcode.com/cann/catlass 写在前面 该文档主要说明CATLASS样例开发中精度分析的基础知识&#xff0c;包括样例精度…...

垂直搜索选型避坑指南,为什么83%的企业在DeepSeek V2.1升级后节省了67%标注成本?

更多请点击&#xff1a; https://codechina.net 第一章&#xff1a;垂直搜索选型避坑指南&#xff0c;为什么83%的企业在DeepSeek V2.1升级后节省了67%标注成本&#xff1f; 垂直搜索系统选型绝非简单替换关键词引擎——它直击领域知识建模、语义对齐与标注闭环三大痛点。Deep…...