热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

无法从elasticsearch节点检索版本信息_【Elasticsearch7搜索之路】(一)什么是Elasticsearch?...

本篇文章对Elasticsearch做了基本介绍,在后续将通过专栏的方式持续更新,本系列以Elasticsearch7作为主要的讲解版本,
本篇文章对 Elasticsearch 做了基本介绍,在后续将通过专栏的方式持续更新,本系列以 Elasticsearch7 作为主要的讲解版本,欢迎各位大佬指正,共同学习进步涨工资!

一般涉及大型数据库的电子商务和搜索引擎的产品都面临这样一个问题,产品信息检索花费时间太长。这不良的用户体验,可能导致失去潜在的客户。这种滞后搜索归因于产品设计所使用到关系数据库,数据分散在多个表中,关系型数据处理这些表中数据获取搜索结果时工作速度是远远不能瞒足。可以说,现在的企业正在寻找数据存储的替代品,以期促进快速检索,而 Elasticsearch(ES)的出现很好解决这些问题。

3a3a9133d5034c070356b283370fc148.png

1、什么是 Elasticsearch?

Elasticsearch 是基于 Lucene 的搜索引擎。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful Web接口。

换句话说,Elasticsearch 是用 Java 开发的开源,独立数据库服务器。基本上,它用于全文搜索和分析。它从各种来源获取数据,并将其存储为针对搜索进行了高度优化的复杂格式。如上所述,Elasticsearch 将 Apache Lucene 作为搜索的核心。由于 Lucene 只是一个库,使用起来有一定难度。但是你不必担心,Elasticsearch 对搜索引擎操作都进行封装 ,可以通过使用对应的 Restful 的 API 进行操作。使用 Elasticsearch 可以快速有效地存储,搜索和分析大量数据,而且在处理半结构化数据(即自然语言)时特别有用。

2、Elasticsearch 能做什么?

平时我们在 GitHub 上进行搜索的时候,Github 不仅可以帮我们找到相隔的代码产库,还可以帮助实现代码级的搜索及搜索词的高亮的显示,。当你在网上购物的时候,它也可以帮助你做商品的推荐。当你下班的时候,Elasticsearch 可以帮助你定位附件的乘客和司机,帮助平台优化调度,除了搜索,结合 Kibana、Logstash、Beats 的 ELK(Elastic Stack) 还被广泛使用在大数据近实时分析的领域,包括了日志分析、指标监控、信息安全等多个领域,它可以帮助你探索海量的、结构化的、非结构化的数据,按需创建是可视化报表,对监控数据设置报警阀值。

5adcb9940723ea0cd8438d25929a841f.png

3、Elasticsearch 5、6、7版本特性史

V5.x

  • Lucene 6.x,
  • 性能提升,默认打分机制从 TF-IDF 改为 BM 25
  • 支持 Ingest 节点、 Completion suggested 、Java REST 客户端
  • Type 标记成 deprecated,支持了 Keyword 的类型
  • 性能优化
    • 减少了内部争竞争,防止对同一文档进行并发更新的竞争以及在同步事务日志时减少了锁定要求,索引吞吐量已得到了极大的提高
    • Instant Aggregations,在 Shard 层面提供了 Aggregation 缓存
    • 新增了 Profile API

V6.x

  • Lucene 7.x
  • Removal of types,在 6.0 里面,开始不支持一个 index 里面存在多个 type
  • 跨多个Elasticsearch集群搜索,保留原来的索引在 5.x 群集,跨群集搜索来同时搜索 6.x 和 5.x 群集
  • 跨群集复制(CCR)
  • 更友好的的升级及数据迁移,在主要版本之间的迁移更为简化,体验升级
  • 性能优化
    • 稀疏区域改进,降低了存储成本
    • 通过索引排序,可加快排序的查询性能

V7.x

  • Lucene 8.0
  • 重大改进-正式废除单个索引下多 Type 的支持
  • 7.1开始,Security 功能免费使用
  • ECK,允许用户在 Kubernetes 上配置,管理和操作 Elasticsearch 集群
  • TransportClient 被废弃
    以至于,ES7 的 Java 代码,只能使用 restclient
  • 新功能
    • 新的集群协调
    • 功能更完善的 REST Client
    • Script Score Query,下一代的评分方式
  • 性能优化
    • 默认的 Primary Shard 数从 5 改为 1,避免 Over Sharding
    • 性能优化,更快的 Top K 检索

4、Elasticsearch 基本概念

要了解 Elasticsearch ,首先要先了解下面的几个专有名词,索引(Index)、文档( Document)、类型(Type)

索引(Index)

  • Index 一索引是文档的容器,是一类文档的结合
    • Index 体现了逻辑空间的概念:每个索引都有自己的 Mapping,用于定义包含的文档的字段名和字段类型
    • Shard 体现了物理空间的概念:索引中的数据分散在 Shard 上
  • 索引的 Mapping 与 Settings
    • Mapping 定义文档字段的类型
    • Setting 定义不同的数据分布

定义不同的数据分布

{"movies" : {"settings" : {"index" : {"creation_date" : "1570452552","number_of_shards" : "5","number_of_replicas" : "1","uuid" : "pB0UsxjfQT2fW-s8Uy-Nsg","version" : {"created" : "2030599"}}}}
}

定义文档字段的类型

{"movie": {"mappings": {"doc": {"properties": {"songName": {"type": "text"},"singer": {"type": "text"},"price": {"type": "integer"}}}}}
}

索引有不同语义,在 ES 中指的是在集群中创建的索引(名词),也可以指的是文档到 ES 的过程(动词),即是一次倒排索引的过程。而在其他地方看到索引更多表示 B 树索引或者倒排索引。

文档( Document)

  • Elasticsearch 是面向文档的,文档是所有可搜索数据的最小单位
    • 日志文件中的日志项
    • 一本电影的具体信息
    • 一首歌的详细信息
  • 文档会被序列化成 JSON 格式,保存在 Elasticsearch 中
    • JSON 对象由字段组成,
    • 每个字段都有对应的字段类型(字符串/数值/布尔/日期/二进制/范围类型)
  • 每个文档都有一个 Unique ID
    • 可以自己指定 ID 或者通过 Elasticsearch 自动生成

案例

{"songName" : "说好不哭","singer" : "周杰伦","price" : 3
}

文档的元数据

{"_index" : "song","_type" : "_doc","_id" : "1","_version" : 1,"found" : true,"_source" : {"songName" : "说好不哭","singer" : "周杰伦","price" : 3}
}

  • 元数据,用于标注文档的相关信息
    • _index :文档所属的索引名
    • _type :文档所属的类型名
    • _id :文档唯一 Id
    • _source:文档的原始 JSON 数据
    • _all:整合所有字段内容到该字段,已被废除
    • _version:文档的版本信息
    • _score:相关性打分

类型(Type)

  • 在 7.0 之前,一个 Index 可以设置多个 Types
  • 6.0 开始, Type 已经被 Deprecated。7.0 开始一个索引,只能创建一个 Type -"_doc"。

5、RDBMS VS Elasticsearch

下面是 RDBMS 和 Elasticsearch 一个不是很恰当类比,Elasticsearch 集群可以包含多个索引 Indes(数据库),每一个索引可以包含一个doc类型 Type(表),每一个类型包含多个文档 Document(记录),然后每个文档包含多个字段 Fields(列),DSL 相当于 RDBMS 的 SQL。

dd2f6e16583cf1c30ff70284536da64a.png

6、小结

与传统 SQL 数据库管理系统(其花费10秒钟以上的时间来获取所需的搜索查询数据)相比,Elasticsearch 可以在10毫秒内完成此操作。由于 Elasticsearch 具有分布式架构,因此它可以扩展到数千个服务器并容纳PB级的数据。我们不必管理分布式设计的复杂性,因为 ES 已经自动完成。我们有多种方法可以为一些文档建立索引或查询它们,然而在使用 ES 下,我们可以轻松实现在海量数据快速检索全文,得到我们想要的结果。



推荐阅读
  • 一:什么是solrSolr是apache下的一个开源项目,使用Java基于lucene开发的全文搜索服务器;Lucene是一个开放源代 ... [详细]
  • 云原生应用最佳开发实践之十二原则(12factor)
    目录简介一、基准代码二、依赖三、配置四、后端配置五、构建、发布、运行六、进程七、端口绑定八、并发九、易处理十、开发与线上环境等价十一、日志十二、进程管理当 ... [详细]
  • 如何方便地退订邮件列表,避免混乱和烦恼
    本文介绍了如何方便地退订邮件列表,避免混乱和烦恼。文章指出,退订邮件列表可能会造成混乱,特别是当被意外添加到列表中时。为了快速、轻松地取消订阅,建议不要将退订电子邮件发送到用于发布消息的电子邮件地址。文章还介绍了邮件列表由邮件列表软件控制,作为邮件列表成员,可以对该软件进行一些用户控制。一些邮件列表允许使用自动电子邮件地址退订,但这可能会带来一些混乱。最后,文章提到退订邮件列表需要向电子邮件服务器发送特殊命令来脱离列表。 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • 一、Hadoop来历Hadoop的思想来源于Google在做搜索引擎的时候出现一个很大的问题就是这么多网页我如何才能以最快的速度来搜索到,由于这个问题Google发明 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 关于我们EMQ是一家全球领先的开源物联网基础设施软件供应商,服务新产业周期的IoT&5G、边缘计算与云计算市场,交付全球领先的开源物联网消息服务器和流处理数据 ... [详细]
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 本文介绍了在使用Python中的aiohttp模块模拟服务器时出现的连接失败问题,并提供了相应的解决方法。文章中详细说明了出错的代码以及相关的软件版本和环境信息,同时也提到了相关的警告信息和函数的替代方案。通过阅读本文,读者可以了解到如何解决Python连接服务器失败的问题,并对aiohttp模块有更深入的了解。 ... [详细]
  • 本文介绍了Windows操作系统的版本及其特点,包括Windows 7系统的6个版本:Starter、Home Basic、Home Premium、Professional、Enterprise、Ultimate。Windows操作系统是微软公司研发的一套操作系统,具有人机操作性优异、支持的应用软件较多、对硬件支持良好等优点。Windows 7 Starter是功能最少的版本,缺乏Aero特效功能,没有64位支持,最初设计不能同时运行三个以上应用程序。 ... [详细]
  • 部署solr建立nutch索引
    2019独角兽企业重金招聘Python工程师标准接着上篇nutch1.4的部署应用,我们来部署一下solr,solr是对lucene进行了封装的企 ... [详细]
author-avatar
qin2112
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有