如何在百度上搜索到自己的网站,双重预防机制信息化平台,阿里云做的网站程序员,网站增加外链的方法有哪些一、什么是Elasticsearch
Elasticsearch#xff08;简称ES#xff09;是一款非常强大的开源搜索引擎#xff0c;可以帮助我们从海量数据中快速找到需要的内容。它使用Java编写#xff0c;基于Apache Lucene来构建索引和提供搜索功能#xff0c;是一个分布式、可扩展、近实…一、什么是Elasticsearch
Elasticsearch简称ES是一款非常强大的开源搜索引擎可以帮助我们从海量数据中快速找到需要的内容。它使用Java编写基于Apache Lucene来构建索引和提供搜索功能是一个分布式、可扩展、近实时的高性能搜索与数据分析引擎。
1、Elasticsearch用在哪些场景
我们想想一下例如我们去github上去搜索一些仓库它去搜索的时候不仅仅是把相关的仓库搜索出来还可以把你搜索的关键字所在的相关代码块展示出来并进行了高亮显示非常智能 又例如我们去京东上买东西输入商品信息后网站立马就会显示出和我们输入的关键字有关的商品例如下图输入“iPhone”后下面商品搜索出与苹果手机相关的商品并且“iPhone”这个字还会高亮显示 还比如我们平时编程时遇到一些问题肯定会去百度和谷歌一下找相关问题的答案。在搜索引擎中输入相关问题描述下面就会显示和这个问题相关的答案并且和搜索关键字相关的内容也会被高亮显示 甚至是在我们平时打车的时候我们搜索附近车辆的时候每一辆车所在的位置也是搜索范围是否是我们所在区域关键字的位置的车为我们匹配最近的车辆 以上的这些场景Elasticsearch都可以实现。
2、Elastic stack(ELK)技术栈介绍
Elasticsearch结合kibana、Logstash、Beats也就是elastic stack(ELK)。被广泛应用在日志数据分析、实时监控等领域。 什么是“日志数据分析”就是我们的项目在实际运行过程中会产生海量的日志信息这些日志信息会方便我们定义系统出现的问题。而Elasticsearch可以帮我们将这些日志进行可视化展示方便我们做日志分析。 另一个“实时监控”的概念即我们在项目运行的过程中它的运行状态也是数据如CPU、内存等情况也可以被Elasticsearch收集并展示过来 这足以看出Elasticsearch这个搜索引擎的应用范围是非常广泛的。
在ELK的技术栈中尽管有很多个组件但核心就是我们的Elasticsearch它主要负责数据的存储、计算、搜索和分析而Logstash和Beats主要负责数据抓取Kibana则是一个数据可视化组件用来在页面上展示数据 在ELK数据栈中Logstash和Beats、Kibana都不是不可替代的我们可以使用自己的方法抓取数据和进行图形化展示。而Elasticsearch这个核心组件是不可替代的。
二、Elasticsearch的底层
Elasticsearch底层基于Apache Lucene开源库进行封装。Lucene是一个Java语言的高性能、可扩展的搜索引擎类库它提供了全文索引和搜索的底层实现。是Apache公司的顶级项目由DougCutting于1999年研发。 官网地址https://lucene.apache.org/ 打开官网首页我们可以看到截止到2024年11月Lucene的最新版本是10.0.0版已经迭代了很多版本了。
1、Lucene的优点
Lucene其实就是一个浓缩的jar包类库它有以下的优点1易扩展 Lucene具有高度的可扩展性和可定制性其系统架构设计精良使得开发者能够方便地根据业务需求进行功能扩展和定制二次开发。通过实现特定的接口和继承相关类开发者可以轻松地添加新功能、优化现有功能或调整索引和搜索逻辑。2高性能基于倒排索引 Lucene的高性能主要得益于其采用的倒排索引技术。倒排索引是一种将文档中的词汇项作为关键字文档ID作为值形成的“值-键”对调的索引结构。这种结构使得Lucene在搜索时能够直接根据关键词快速定位到包含该词的所有文档从而极大地提高了搜索效率。此外Lucene还通过一系列优化措施如压缩索引数据、使用缓存等进一步提升了搜索性能。 想象我们有一堆书想要快速找到包含某个关键词的书最直接的方法是逐本翻阅但这显然非常耗时。而Lucene则采用了一种更聪明的方法即倒排索引。它首先为每本书中的每个关键词建立一个索引记录下这个关键词出现在哪些书中以及出现的位置。这样当我们想要找到包含某个关键词的书时只需要查看这个索引就能迅速定位到相关的书。这种索引方式就像是一个高效的“书签”帮助我们快速找到目标内容从而大大提高了搜索效率。
2、Lucene的缺点
以上是Lucene的优点但同时它也存在以下缺点1只限于Java语言开发 Lucene是一个基于Java语言开发的搜索引擎库这意味着它主要适用于Java语言的项目和开发环境。对于那些不使用Java的项目或团队来说可能需要额外的学习和集成成本。2学习曲线陡峭 Lucene作为一个功能强大且复杂的搜索引擎库API设计非常复杂晦涩其学习曲线相对陡峭。对于初学者来说需要花费较多的时间和精力来熟悉Lucene的架构、API和最佳实践。3不支持水平扩展需二次开发 Lucene的主要目的是为了实现搜索而对于高并发、高可用等场景没有技术支持无法直接进行水平扩展集群扩展即通过在多个服务器上部署多个实例来共同处理搜索请求。虽然Lucene可以通过分片sharding等技术在一定程度上实现数据的分布式存储和搜索但这需要开发者进行额外的二次开发工作。
三、Elasticsearch的发展 Elasticsearch的起源可以追溯到2004年当时Shay Banon基于Lucene开发了一个名为Compass的搜索引擎单体应用主要为他老婆搜索食谱用。然而随着技术的不断演进和需求的日益增长Shay Banon在2010年决定重写Compass支持分布式和集群环境并将其命名为Elasticsearch。这一决定标志着Elasticsearch作为一个独立的开源项目正式诞生并迅速在搜索和分析领域崭露头角。 Elasticsearch的官网地址为https://www.elastic.co/cn/ 这是一个提供Elasticsearch相关资源、文档和社区支持的权威平台它是由Elastic公司管理这个公司的创始人就是上面提到Elasticsearch的原创者Shay Banon。 截止至2024年11月Elasticsearch已经发展到了8.15.3版本这一版本在性能、功能和安全性等方面都进行了诸多优化和升级。随着版本的迭代Elasticsearch不断引入新技术和特性以满足日益复杂和多样化的搜索和分析需求。 相比于LuceneElasticsearch具备下列优势
1、支持分布式可水平扩展
Elasticsearch采用了分布式架构可以轻松扩展到多个节点以便处理大规模数据。这种架构使得Elasticsearch能够应对PB级别的数据存储和搜索需求同时保持高性能和可用性。 通过分片sharding和复制replication机制Elasticsearch实现了数据的高可用性和容错性。即使某个节点发生故障系统也能快速切换到其他节点确保搜索和分析服务的连续性。
2、提供Restful接口可被任何语言调用
Elasticsearch提供了一个简单易用的RESTful API使得数据的索引、搜索和分析变得非常简单。这一API遵循REST风格支持HTTP协议因此可以被任何编程语言调用。 通过RESTful API开发者可以轻松地将Elasticsearch集成到各种应用程序中实现数据的实时搜索、分析和可视化。这种灵活性使得Elasticsearch成为构建现代搜索和分析应用的理想选择。 综上所述Elasticsearch作为Lucene的衍生产品不仅继承了Lucene的强大搜索功能还通过分布式架构和RESTful API等创新特性实现了更高的可扩展性、易用性和集成性。这些优势使得Elasticsearch在搜索和分析领域具有广泛的应用前景和巨大的市场潜力。
四、为什么学习Elasticsearch
实际上从Lucene诞生开始就不止Elasticsearch一个搜索引擎程序问世其中还包含Splunk商业项目、SolrApache的开源搜索引擎但是Elasticsearch在全球搜索引擎排名中一直稳坐第一名的宝座并且和第二名Splunk拉开了很大差距 其实在Elasticsearch刚刚诞生时Solr在全球搜索引擎中占有很大比例但是随着后来的发展Solr渐渐地被Elasticsearch超越了大概是2016年 所以我们主要还是以学习目前占比最高的搜索引擎作为我们本次学习的目标。
五、学习总结
本篇博客我们一共学习了以下三个知识大家可以回顾一下1、什么是elasticsearch? 一个开源的分布式搜索引擎可以用来实现搜索、日志统计、分析系统监控等功能2、什么是elastic stack(ELK)? 是以elasticsearch为核心的技术栈包括beats、Logstash、kibana、elasticsearch3、什么是Lucene? 是Apache的开源搜索引擎类库提供了搜索引擎的核心API
至此关于elasticsearch的基础介绍就到此结束了为了更加深入理解elasticsearch为的原理下一篇我们来学习什么是“倒排索引”。
参考《黑马Elasticsearch全套教程》
转载请注明出处https://guangzai.blog.csdn.net/article/details/143658138