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

单播:点对点通信,不是吼一嗓子,而是悄悄的问,谁是我兄弟

多播:吼一嗓子,谁是我兄弟,大家可以同时听到

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

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

相关文章

Linux MeterSphere测试平台远程访问你不会?来试试这篇文章

🎬 鸽芷咕:个人主页 🔥 个人专栏:《粉丝福利》 《C语言进阶篇》 ⛺️生活的理想,就是为了理想的生活! 文章目录 前言1. 安装MeterSphere2. 本地访问MeterSphere3. 安装 cpolar内网穿透软件4. 配置MeterSphere公网访问地址5. 公网…

影响产品开发决策的认知偏见

认知偏见存在于每个人的内心,并在不断影响人们的工作和生活。认识并承认自己有偏见,并寻求相应的解决方案,可以帮助我们更好的做出产品决策、团队建设和架构设计。原文: The cognitive biases that influence product development decisions …

【c++|opencv】一、基础操作---2.图像信息获取

every blog every motto: You can do more than you think. https://blog.csdn.net/weixin_39190382?typeblog 0. 前言 图像信息获取&#xff0c;roi 1. 图像信息获取 // 获取图像信息#include <iostream> #include <opencv2/opencv.hpp>using namespace cv; …

QT-- out of memory, returning null image

提示&#xff1a;本文为学习内容&#xff0c;若有错误&#xff0c;请及时联系作者&#xff0c;谦虚受教 文章目录 前言一、崩溃信息二、错误原因1.QImage2.QStandardItemModel 三、问题解决总结 前言 学如逆水行舟&#xff0c;不进则退。 一、崩溃信息 崩溃信息: QImage: out…

学习Linux/GNU/C++/C过程中遇到的问题

学习Linux/GNU/C/C过程中遇到的问题 1.源函数调用&#xff1a;2.linux静态库使用&#xff1a;3.vscode创建c程序调用onnxruntime:问题1&#xff1a;找不到头文件或者未定义函数问题2:error while loading shared libraries: libonnxruntime.so.1.16.1: cannot open shared obje…

linux的使用学习(1)

Linux 修改root密码 1.以 root 用户或具有 sudo 权限的登录到 Linux 系统。 2.打终端&#xff0c;并执行以下命令以更改 root 用户的密码&#xff1a; sudo passwd root 3.然后&#xff0c;系统会要求你输入新的 root 密码。请注意&#xff0c;在输入密码时&#xff0c;终端界…

[毕设记录]@学术技能积累:zotero、readpaper 引用功能使用

文章目录 zoteroreadpaper 开题要在word里插入文献引用&#xff0c;zotero和readpaper在浏览器和word都有插件&#xff0c;比较好用 zotero Zotero 是一个免费、开源的参考文献管理软件&#xff0c;可以帮助用户收集、整理和引用文献。它支持多种操作系统&#xff0c;包括 Wind…

算法通关村第十二关黄金挑战——最长公共前缀问题解析

大家好&#xff0c;我是怒码少年小码。 最长公共前缀 LeetCode 14&#xff1a;编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀&#xff0c;返回空字符串 “”。 示例&#xff1a; 输入&#xff1a;strs [“flower”,“flow”,“flight”]输出&#xff…

网际协议IP

网际协议IP 一、IP地址 1、分类的IP地址 IP地址::{<网络号>,<主机号>} 2、无分类编址CIDR IP地址::{<网络前缀>,<主机号>} &#xff08;1&#xff09;网络前缀 ​ 与分类IP最大的区别就是网络前缀的位数n是不固定的&#xff0c;可以是0~32位。 ​ …

Day 11 python学习笔记

模块 内置模块 random random&#xff1a;随机数模块 我们可以在解释器中看到其蕴含的方法 接下来我解释一些常用的方法&#xff1a; random.random( ) random.random( ) 返回0-1的随机数 [0,1) >>> random.random() 0.364183511476754 random.randint(n,m) r…

Team AI:简化繁琐日常任务,打造团队智能协作

在过去的几个月里&#xff0c;我的同事们&#xff08;Thoughtworker&#xff09;一直在构建 Team AI 项目&#xff0c;一个围绕于 AIGC 辅助开发团队的野心勃勃的计划。在内部&#xff0c;我们还有一个名为 Team AI Hackathon 的活动&#xff0c;基于一个内部的 Team AI 代码库…

CCS3列表和超链接样式

在默认状态下&#xff0c;超链接文本显示为蓝色、下画线效果&#xff0c;当鼠标指针移过超链接时显示为手形&#xff0c;访问过的超链接文本显示为紫色&#xff1b;而列表项目默认会缩进显示&#xff0c;并在左侧显示项目符号。在网页设计中&#xff0c;一般可以根据需要重新定…

使用Llama index构建多代理 RAG

检索增强生成(RAG)已成为增强大型语言模型(LLM)能力的一种强大技术。通过从知识来源中检索相关信息并将其纳入提示&#xff0c;RAG为LLM提供了有用的上下文&#xff0c;以产生基于事实的输出。 但是现有的单代理RAG系统面临着检索效率低下、高延迟和次优提示的挑战。这些问题在…

答题小程序源码个人每日答题怎么做

答题小程序源码之个人每日答题怎么做 该模式以个人学习答题的方式进行答题&#xff0c;每人每天有X次答题机会&#xff0c;答对一题得X分&#xff0c;连续答对有额外奖励积分&#xff0c;每道题有倒计时X秒的思考时间。答题完成后领取本次的奖励积分。答题过程中如发现题目或答…

3D模拟场景开发引擎

在3D工程模拟开发中&#xff0c;有一些专门的引擎和工具可供选择&#xff0c;以帮助您创建逼真的三维模拟和模型。以下是一些用于3D工程模拟的开发引擎和工具&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎交流…

matlab 布尔莎七参数坐标转换模型

目录 一、算法原理二、代码实现三、结果展示本文由CSDN点云侠原创,原文链接。爬虫自重,把自己当个人。 一、算法原理 算法原理与实现代码已在免费文章:布尔莎七参数坐标转换模型一文中给出,不想看付费文章直接跳转即可。 二、代码实现 clc; clear; close all; %% --

C语言C位出道心法(一):基础语法

一:基础语法认知:|变量|常量|数据类型| 变量与常量,数据类型认知升维 C语言中各种变量的定义及数据类型的认知: 一般而言,在譬如C等高级编程语言中,我们定义不同的类型的变量,需要不同的数据类型来进行声明,不同类型的数据类型声明的变量占用的内存空间不一样; 而数据类型大致…

go中“哨兵错误”的由来及使用建议

“哨兵错误&#xff08;sentinel error&#xff09;”这个词的出处。之前我也只是在一些书籍和资料中见到过&#xff0c;也没深究。当这个网友问了我之后&#xff0c;就深入的翻了翻资料&#xff0c;在golang的官方博客中找到了这个词的提法&#xff0c;也算是比较官方的了吧。…

如何在外SSH远程连接Ubuntu系统【无公网IP】

如何在外SSH远程连接Ubuntu系统【无公网IP】 文章目录 如何在外SSH远程连接Ubuntu系统【无公网IP】前言1. 在Ubuntu系统下安装cpolar软件2. 完成安装后打开cpolar客户端web—UI界面3. 创建隧道取得连接Ubuntu系统公网地址4. 打开Windows的命令界面并输入命令 前言 随着科技和经…

酷开科技,让家庭更有温度!

生活中总有一些瞬间&#xff0c;会让我们感到无比温暖和幸福。一个拥抱、一句问候、一杯热茶&#xff0c;都能让我们感受到家庭的温馨和关爱。酷开科技也用自己的方式为我们带来了独属于科技的温暖&#xff0c;通过全新的体验将消费者带进一个充满惊喜的世界&#xff0c;让消费…