ES 可扩展、高可靠、使用场景等常见问题
ElasticSearch的常见问题
什么是ElasticSearch
ElasticSearch是一款非常强大的、基于Lucene的开源搜索及分析引擎;它是一个实时的分布式搜索分析引擎,它能让你以前所未有的速度和规模,去探索你的数据。
它被用作全文检索、结构化搜索、分析以及这三个功能的组合:
- Wikipedia 使用 Elasticsearch 提供带有高亮片段的全文搜索,还有 search-as-you-type 和 did-you-mean 的建议。
- 卫报 使用 Elasticsearch 将网络社交数据结合到访客日志中,为它的编辑们提供公众对于新文章的实时反馈。
- Stack Overflow 将地理位置查询融入全文检索中去,并且使用 more-like-this 接口去查找相关的问题和回答。
- GitHub 使用 Elasticsearch 对1300亿行代码进行查询。
除了搜索,结合Kibana、Logstash、Beats开源产品,Elastic Stack(简称ELK)还被广泛运用在大数据近实时分析领域,包括:日志分析、指标监控、信息安全等。它可以帮助你探索海量结构化、非结构化数据,按需创建可视化报表,对监控数据设置报警阈值,通过使用机器学习,自动识别异常状况。
ElasticSearch是基于Restful WebApi,使用Java语言开发的搜索引擎库类,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。其客户端在Java、C#、PHP、Python等许多语言中都是可用的。
ElasticSearch的特点
Elasticsearch 是一个分布式的搜索和分析引擎,它以其可扩展性、高可靠性和易于管理的特点而广受欢迎。下面我将详细说明这些特性体现在哪些方面:
可扩展性(Scalability)
-
分布式架构:
Elasticsearch 通过将数据分散存储到多个节点的索引分片中来实现水平扩展和负载均衡。一个索引可以被分成多个分片(Shards),而这些分片可以分布在集群的不同节点上。 -
节点和集群:
当需要扩展系统时,可以简单地增加更多的节点。Elasticsearch 集群会自动重新分配分片以均衡负载和空间使用。 -
数据分区和复制:
每个分片可以有零或多个副本(Replicas),这些副本分布在不同的节点上,可以提供数据冗余和提高查询能力。 -
路由和负载均衡:
各个请求会被智能地路由到包含相关数据的分片上,这样可以平衡不同节点之间的处理压力。
高可靠性(High Availability)
-
数据复制:
副本分片保证了数据的高可用性。如果某个分片的主节点遇到问题,副本分片可以立即接管,保证服务的连续性。 -
故障转移机制:
集群中的节点可以动态加入或退出,Elasticsearch 会自动进行数据的重分布,并在节点失效时进行故障转移。 -
持久性和恢复:
Elasticsearch 通过将数据写入磁盘来确保其持久性,并支持自动的快照和恢复机制,用于灾难恢复。 -
集群健康监控:
Elasticsearch 提供了丰富的监控API来监控集群状态,并提前预防可能的问题。
管理便捷性(Ease of Management)
-
RESTful API:
Elasticsearch 可以通过HTTP的RESTful API进行管理和维护,这使得集群管理变得更加简单明了。 -
灵活的数据模式:
Elasticsearch 支持无模式(schema-less)的数据输入,这意味着你可以在任何时间动态地添加新字段,而无需修改现有的数据结构。 -
配置和调整:
Elasticsearch 提供了一系列配置选项,使得管理员可以灵活地根据需要调整集群的行为和性能。 -
集成和插件生态:
Elasticsearch 有着丰富的插件生态系统,可用于监控、警报、安全性增强等,并且可以很容易地与其他系统集成(如Kibana用于数据可视化,Logstash用于数据处理)。 -
升级和维护:
升级Elasticsearch集群也设计得相对平滑,支持滚动升级,即一次升级一个或几个节点,而不需要中断整个集群的服务。
总之,Elasticsearch的可扩展性体现在它能够通过增加节点来水平扩展处理能力;高可靠性体现在通过副本机制和故障转移来确保数据不丢失且服务可用;管理便捷性体现在易用的API、弹性的配置和丰富的插件生态。这些特性使得Elasticsearch非常适合作为大规模、多变需求和要求高可用性的搜索和分析场景的解决方案。
为什么要学习ElasticSearch?
- 在当前软件行业中,搜索是一个软件系统或平台的基本功能, 学习ElasticSearch就可以为相应的软件打造出良好的搜索体验。
- 其次,ElasticSearch具备非常强的大数据分析能力。虽然Hadoop也可以做大数据分析,但是ElasticSearch的分析能力非常高,具备Hadoop不具备的能力。比如有时候用Hadoop分析一个结果,可能等待的时间比较长。
- ElasticSearch可以很方便的进行使用,可以将其安装在个人的笔记本电脑,也可以在生产环境中,将其进行水平扩展。
- 国内比较大的互联网公司都在使用,比如小米、滴滴、携程等公司。另外,在腾讯云、阿里云的云平台上,也都有相应的ElasticSearch云产品可以使用。
- 在当今大数据时代,掌握近实时的搜索和分析能力,才能掌握核心竞争力,洞见未来。
ElasticSearch的主要功能及应用场景?
主要功能:
- 海量数据的分布式存储以及集群管理,达到了服务与数据的高可用以及水平扩展;
- 近实时搜索,性能卓越。对结构化、全文、地理位置等类型数据的处理;
- 海量数据的近实时分析(聚合功能)
应用场景:
- 网站搜索、垂直搜索、代码搜索;
- 日志管理与分析、安全指标监控、应用性能监控、Web抓取舆情分析;
为什么不是直接使用Lucene?
ElasticSearch是基于Lucene的,那么为什么不是直接使用Lucene呢?
Lucene 可以说是当下最先进、高性能、全功能的搜索引擎库。
但是 Lucene 仅仅只是一个库。为了充分发挥其功能,你需要使用 Java 并将 Lucene 直接集成到应用程序中。 更糟糕的是,您可能需要获得信息检索学位才能了解其工作原理。Lucene 非常 复杂。
Elasticsearch 也是使用 Java 编写的,它的内部使用 Lucene 做索引与搜索,但是它的目的是使全文检索变得简单,通过隐藏 Lucene 的复杂性,取而代之的提供一套简单一致的 RESTful API。
然而,Elasticsearch 不仅仅是 Lucene,并且也不仅仅只是一个全文搜索引擎。 它可以被下面这样准确的形容:
- 一个分布式的实时文档存储,每个字段 可以被索引与搜索
- 一个分布式实时分析搜索引擎
- 能胜任上百个服务节点的扩展,并支持 PB 级别的结构化或者非结构化数据
都有那些和Elasticsearch 媲美的搜索引擎?
-
Apache Solr
- 基于 Apache Lucene 构建,与 Elasticsearch 类似,Solr 是一个功能强大的搜索平台,它提供了全文搜索、高亮、分面、复制、负载均衡等功能。它在某些方面比 Elasticsearch 更成熟,例如在企业环境中已经使用了很多年。
-
Amazon OpenSearch Service (以前叫做Amazon Elasticsearch Service)
- 这是由 AWS 维护的一个 Elasticsearch 的分支版本,旨在提供与 Elasticsearch 相同的 API 兼容性,以及其他 AWS 服务的集成和一些额外功能。
-
Apache Lucene
- Elasticsearch 和 Solr 都是基于 Lucene 的,而 Lucene 是一个高性能、全特性的搜索库,如果你想更深入地控制搜索引擎的内部工作机制,可以直接使用 Lucene。
-
Algolia
- 是一个即插即用的搜索平台,提供了丰富的 API 和 SDK,让开发者很容易地集成到他们的网站、应用程序或移动应用中。Algolia 重点关注用户体验和开箱即用的功能。
-
Sphinx (Sphinx Search)
- 是一个开源的全文搜索服务器,提供了出色的性能,适用于处理大量数据。它可以与 SQL 数据库和 NoSQL 数据系统集成,并且支持分布式搜索。
-
MeiliSearch
- 是一个轻量级的、开源的搜索引擎,专注于用户体验和简化搜索设置。它易于部署和维护,并且提供了一个简洁直观的搜索经验。
-
Typesense
- 是一个开源、轻量级的、类似于 Algolia 的搜索引擎,旨在提供快速和精准的搜索体验。它易于安装和使用,并提供了一个简化的 API。
-
Bleve
- 是一个用 Go 语言编写的现代文本索引库,它提供了全文搜索功能,适合进行自定义的搜索系统开发。
选择哪个搜索引擎通常取决于具体的使用场景、性能要求、数据量大小、以及是否需要特定的功能。同时,团队的经验和偏好,以及和其他系统的集成情况,也会影响选择。在决策时,最好是先对每个候选的搜索引擎进行评估,确定它们是否能够满足项目的需求。
Apache Solr 和 Elasticsearch的区别?
Apache Solr 和 Elasticsearch 都是基于 Apache Lucene 构建的开源搜索引擎,它们都提供全文搜索功能、分布式搜索、索引功能以及能够横向扩展。尽管有许多相似之处,但也存在一些关键的区别:
-
起源和社区:
- Solr:Solr 由 CNET 网络公司创建,并于 2006 年贡献给了 Apache 软件基金会。它拥有一个成熟的社区,并且是在 Lucene 项目之后不久就推出的。
- Elasticsearch:Elasticsearch 于 2010 年由 Shay Banon 创建并开发,较 Solr 晚出现。Elasticsearch 背后有一个公司 Elastic NV,将其作为其产品栈的核心部分。
-
架构:
- Solr:Solr 使用经典的主/从架构,尽管它也可以配置为使用更现代的SolrCloud模式,后者支持自动负载均衡和容错。
- Elasticsearch:Elasticsearch 从一开始就设计为分布式系统,其核心功能包括集群分片、复制和负载均衡,具有很好的伸缩性和容错性。
-
可扩展性和容错性:
- Solr:SolrCloud 提供了可扩展性和容错性,但通常认为其设置和管理比 Elasticsearch 更复杂。
- Elasticsearch:自带易于配置和使用的分片机制,因此在处理大型集群和数据量时可能更受青睐。
-
实时搜索:
- Solr:传统上,Solr 在处理实时搜索查询方面不如 Elasticsearch 强大,但随着近年的更新,这方面的差距已经缩小。
- Elasticsearch:以其实时搜索功能和快速的索引速度而闻名。
-
数据处理:
- Solr:Solr 支持复杂的数据处理,包括丰富的文本分析、拼写检查和自动完成功能。
- Elasticsearch:提供了构建复杂搜索功能的强大查询DSL(领域特定语言),并且与 Logstash 和 Kibana 集成良好,这些是 ELK(Elasticsearch, Logstash, Kibana)堆栈的一部分,用于日志分析和数据可视化。
-
API 和生态系统:
- Solr:具有多种形式的API,包括 XML、JSON 和 HTTP,且有较为丰富的接口文档。
- Elasticsearch:主要使用基于 REST 的 JSON 接口,拥有广泛的客户端库支持多种编程语言。
-
管理和监控工具:
- Solr:提供了一个管理界面,即 Solr Admin UI,用来管理和监控 Solr 实例。
- Elasticsearch:使用 Kibana 作为其主要的监控工具,提供了更为丰富且用户友好的图形界面。
两者在性能和特性上都有不断的改进和更新,所以在实际选择使用哪个搜索引擎时,通常取决于特定项目的需求、现有基础设施以及团队的熟悉度。在某些情况下,两种技术也可以在同一个项目中共存,以满足不同的搜索和索引需求。
相关文章:

ES 可扩展、高可靠、使用场景等常见问题
ElasticSearch的常见问题 什么是ElasticSearch ElasticSearch是一款非常强大的、基于Lucene的开源搜索及分析引擎;它是一个实时的分布式搜索分析引擎,它能让你以前所未有的速度和规模,去探索你的数据。 它被用作全文检索、结构化搜索、分析…...

<网络安全>《4 网络安全产品之web应用防护系统》
1 基本概念 1.1 WAF Web应用防护系统(也称为:网站应用级入侵防御系统。英文:Web Application Firewall,简称:WAF)。一般作为网关设备,防护Web、Webmail服务器等。 1.2 本质 WAF的本质是Web应…...

如何解决Flutter应用程序的兼容性问题
随着移动应用开发领域的不断发展,Flutter作为一种跨平台框架,受到了越来越多开发者的青睐。要确保Flutter应用程序能够在不同的设备和操作系统上稳定运行,并提供一致的用户体验,我们需要重视应用程序的兼容性问题。下面将简单的介…...

详解Mockito
详解Mockito 1. Mockito简介 在我们的编程世界中,测试是一个非常重要的环节,它能帮助我们确保代码的质量和稳定性。而在众多的测试方法中,Mock测试是一种非常有效的手段。 1.1 什么是 Mock 测试 Mock测试,顾名思义,…...

【论文+App试玩+图像到视频】2311.Animate-anyone:上传1张图片为任何人制作动画(用于角色动画的一致且可控的图像到视频合成)(暂未开源)
项目主页:https://humanaigc.github.io/animate-anyone/ 论文: Animate Anyone: Consistent and Controllable Image-to-Video Synthesis for Character Animation 摩尔线程复现代码:https://github.com/MooreThreads/Moore-AnimateAnyone 摩尔windows一…...

【深度学习实验】TensorBoard使用教程【SCALARS、IMAGES、TIME SERIES】
文章目录 一、环境二、TensorBoard1. 使用TensorBoardXa. 安装TensorBoardXb. 使用示例 2. PyTorch内置的TensorBoard3. 启动TensorBoard服务 三、实战1. SCALARS(标量)找不同关卡1关卡2关卡3关卡4 Show data download linksIgnore outliers in chart sc…...

渗透测试(12)- WireShark 网络数据包分析
目录 1、WireShack 简介 2、WireShark 基本使用方法 3、 WireShack 抓包分析 3.1 Hypertext Transfer Protocol (应用层) 3.2 Transmission Control Protocol (传输层) 3.3 Internet Protocol Version 4(网络层) 3.4 Ethernet Il (链路层): 数据链路层以太网头部信息 …...

XSS_Labs靶场通关笔记
每一关的方法不唯一;可以结合源码进行分析后构造payload; 通关技巧(四步): 1.输入内容看源码变化; 2.找到内容插入点; 3.测试是否有过滤; 4.构造payload绕过 第一关 构造paylo…...

基于本地缓存制作一个分库分表的分布式ID生成器
引言: 代码在 https://gitee.com/lbmb/mb-live-app 中 【mb-live-id-generate-provider】 模块里面 如果喜欢 希望大家给给star 项目还在持续更新中。 背景介绍 项目整体架构是 基于springboot 3.0 开发 rpc 调用采用 dubbo 注册配置中心 使用 nacos 采用shardin…...

美易平台:金融市场的晴雨表与创新服务的融合
在金融市场中,利率的微妙变动往往预示着经济活动的脉动,而美国纽约联储发布的最新数据显示,上个交易日(1月25日)担保隔夜融资利率(SOFR)小幅上升至5.32%,而同期有效的联邦基金利率保…...

文旅项目包括什么?
文旅项目是指与文化和旅游相结合的项目,旨在通过提供丰富的文化体验和旅游服务来吸引游客,促进地方经济发展。 文旅项目通常包括多个方面,以下是对每块内容的详细介绍: 文化旅游景区:这类项目以展示人类文化和历史遗产…...

Pointnet++改进优化器系列:全网首发AdamW优化器 |即插即用,实现有效涨点
简介:1.该教程提供大量的首发改进的方式,降低上手难度,多种结构改进,助力寻找创新点!2.本篇文章对Pointnet++特征提取模块进行改进,加入AdamW优化器,提升性能。3.专栏持续更新,紧随最新的研究内容。 目录 1.理论介绍 2.修改步骤 2.1 步骤一 2.2 步骤二 2.3 步...

stm32 FOC 电机介绍
今年开始学习foc控制无刷电机,这几天把所学整理一下,记录一下知识内容。 前言: 为什么要学习FOC? 1.电机控制是自动化控制领域重要一环。 2.目前直流无刷电机应用越来越广泛,如无人机、机械臂、云台、仿生机器人等等。 需要什么基础&…...

【Linux】进程通信——管道
欢迎来到Cefler的博客😁 🕌博客主页:折纸花满衣 🏠个人专栏:题目解析 🌎推荐文章:【LeetCode】winter vacation training 目录 📋进程通信的目的📋管道匿名管道pipe函数创…...

3d gaussian splatting笔记(paper部分翻译)
本文为3DGS paper的部分翻译。 基于点的𝛼混合和 NeRF 风格的体积渲染本质上共享相同的图像形成模型。 具体来说,颜色 𝐶 由沿射线的体积渲染给出: 其中密度 𝜎、透射率 𝑇 和颜色 c 的样本是沿着射线以…...

TCP 三次握手以及滑动窗口
TCP 三次握手 简介: TCP 是一种面向连接的单播协议,在发送数据前,通信双方必须在彼此间建立一条连接。所谓的 “ 连接” ,其实是客户端和服务器的内存里保存的一份关于对方的信息,如 IP 地址、端口号等。 TCP 可以…...

Vue3 Cli5按需导入ElementPlus
1、安装环境 node:16.20.0 vue:3.2.36 vue/cli:5.0.0 element-plus:2.2.25 element-plus/icons-vue:2.0.10 unplugin-auto-import:0.16.1 // 当前环境用这个包,不然会提示各种错误 unplugin-vu…...

playwright自动化项目搭建
具备功能 关键技术: pylaywright测试库pytest单元测试框架pytest-playwright插件 非关键技术: pytest-html插件pytest-rerunfailures插件seldom 测试框架 实现功能: 元素定位与操作分离失败自动截图并保存到HTML报告失败重跑可配置不同…...

mysql字符集
一、查看字符集 //查看数据库字符集 SHOW CREATE DATABASE databasename; //查看表字符集 SHOW CREATE TABLE tablename; //查看指定表全部字段字符集 show full columns from table; 二、修改字符集 将超出utf8字符集范围的字符比如𪨧插入到utf8字符集的字…...

Elasticsearch:聊天机器人、人工智能和人力资源:电信公司和企业组织的成功组合
作者:来自 Elastic Jrgen Obermann, Piotr Kobziakowski 让我们来谈谈大型企业人力资源领域中一些很酷且改变游戏规则的东西:生成式 AI 和 Elastic Stack 的绝佳组合。 现在,想象一下大型电信公司的典型人力资源部门 — 他们正在处理一百万件…...

[AIGC大数据基础] Flink: 大数据流处理的未来
Flink 是一个分布式流处理引擎,它被广泛应用于大数据领域,具有高效、可扩展和容错的特性。它是由 Apache 软件基金会开发和维护的开源项目,并且在业界中受到了广泛认可和使用。 文章目录 什么是 FlinkFlink 的特点真正的流处理高性能和低延迟…...

数据结构之线性表(一般的线性表)
前言 接下来就开始正式进入数据结构环节了,我们先从线性表开始。 线性表 线性表(linear list)也叫线性存储结构,即数据元素的逻辑结构为线性的数据表,它是数据结构中最简单和最常用的一种存储结构,专门存…...

uniapp安卓android离线打包本地打包整理
离线打包准备 下载Android studio 1.准备资源hbuilder 2.准备离线SDK 最新android平台SDK下载最新android平台SDK下载 3.离线打包key申请 4.直接导入HBuilder-Integrate-AS工程,直接运行simpleDemo项目即可 5.安装java 1.8 jdk-8u151-windows-x64 6.遇到这个报错报错Caus…...

vmware安装centos8-stream
VMware与CentOS8-stream的配置教程【2022-9-5】_centos stream 8-CSDN博客 启动进入后配置网络,/etc/sysconfig/network-scripts/网卡 vmware上的centos8没有网络_主机时wifi上网,centos 8 安装后无法连接网络 解决办法-CSDN博客 centos8配置网络_centos8网络配置…...

使用HttpServletRequestWrapper解决web项目request数据流无法重复读取的问题
在做web项目开发时,我们有时候需要做一些前置的拦截判断处理,比如非法参数校验,防攻击拦截,统一日志处理等,而请求参数如果是form表单提交还好处理;对于json这种输入流的数据就会有问题,统一处理…...

从CNN ,LSTM 到Transformer的综述
前情提要:文本大量参照了以下的博客,本文创作的初衷是为了分享博主自己的学习和理解。对于刚开始接触NLP的同学来说,可以结合唐宇迪老师的B站视频【【NLP精华版教程】强推!不愧是的最完整的NLP教程和学习路线图从原理构成开始学&a…...

Git学习笔记:1 基础命令详解
文章目录 Git基础命令详解: Git基础命令详解: git commit 用法:git commit -m "commit message"功能:将暂存区(stage)中的所有更改提交到本地仓库的当前分支,同时提供一个简短的提交信…...

【服务器】安装宝塔面板
目录 🌺【前言】 🌼【前提】连接服务器 🌷方式一 使用工具登录服务器如Xshell 🌷方式二 阿里云直接连接 🌼 1. 安装宝塔 🌷获取安装脚本 方式一 使用下面提供的脚本安装 方式二 使用官网提供的脚本…...

开源模型应用落地-业务优化篇(一)
一、前言 通过参与“开源模型应用落地-业务整合系列篇”的学习,我们已经成功建立了基本的业务流程。然而,这只是迈出了万里长征的第一步。现在我们要对整个项目进行优化,以提高效率。我们计划利用线程池来加快处理速度,使用redis来实现排队需求,以及通过多级环境来减轻负载…...

【遥感专题系列】影像信息提取之——基于专家知识的决策树分类
可以将多源数据用于影像分类当中,这就是专家知识的决策树分类器,本专题以ENVI中Decision Tree为例来叙述这一分类器。 本专题包括以下内容: 专家知识分类器概述知识(规则)定义ENVI中Decision Tree的使用 概述 基于知…...