ear

【Elasticsearch的架构是什么样的】 Elasticsearch是由Shay Banon发起的一个开源搜索服务器项目,2010年2月发布。迄今,该项目已发展成为搜索和数据分析解决方案领域的主要一员,广泛应用于声名卓著或鲜为人知的搜索应用程序。此外,由于其分布式性质和实时功能,许多人把它作为文档数据库。Ela...【Elasticsearch 简介】 Elasticsearch 是一款功能强大的搜索引擎,广泛应用于 IT 行业。它由 Elastic 公司开发,代码托管在 GitHub 上。Elasticsearch 是一个分布式、免费和开源的搜索和分析引擎,能够处理各种类型的数据,包括文本、数字、地理空间、结构化和非...

Elasticsearch的架构是什么样的

Elasticsearch是由Shay Banon发起的一个开源搜索服务器项目,2010年2月发布。迄今,该项目已发展成为搜索和数据分析解决方案领域的主要一员,广泛应用于声名卓著或鲜为人知的搜索应用程序。此外,由于其分布式性质和实时功能,许多人把它作为文档数据库。
Elasticsearch架构简单介绍如下。
索引
索引(index)是Elasticsearch对逻辑数据的逻辑存储,所以它可以分为更小的部分。你可以把索引看成关系型数据库的表。然而,索引的结构是为快速有效的全文索引准备的,特别是它不存储原始值。如果你知道MongoDB,可以把Elasticsearch的索引看成MongoDB里的一个集合。如果你熟悉CouchDB,可以把索引看成CouchDB数据库索引。Elasticsearch可以把索引存放在一台机器或者分散在多台服务器上,每个索引有一或多个分片(shard),每个分片可以有多个副本(replica)。
文档
存储在Elasticsearch中的主要实体叫文档(document)。用关系型数据库来类比的话,一个文档相当于数据库表中的一行记录。当比较Elasticsearch中的文档和MongoDB中的文档,你会发现两者都可以有不同的结构,但Elasticsearch的文档中,相同字段必须有相同类型。这意味着,所有包含title字段的文档,title字段类型都必须一样,比如string。
文档由多个字段组成,每个字段可能多次出现在一个文档里,这样的字段叫多值字段(multivalued)。每个字段有类型,如文本、数值、日期等。字段类型也可以是复杂类型,一个字段包含其他子文档或者数组。字段类型在Elasticsearch中很重要,因为它给出了各种操作(如分析或排序)如何被执行的信息。幸好,这可以自动确定,然而,我们仍然建议使用映射。与关系型数据库不同,文档不需要有固定的结构,每个文档可以有不同的字段,此外,在程序开发期间,不必确定有哪些字段。当然,可以用模式强行规定文档结构。从客户端的角度看,文档是一个JSON对象(关于JSON格式的更多内容,参见http://en.wikipedia.org/wiki/JSON)。每个文档存储在一个索引中并有一个Elasticsearch自动生成的唯一标识符和文档类型。文档需要有对应文档类型的唯一标识符,这意味着在一个索引中,两个不同类型的文档可以有相同的唯一标识符。
文档类型
在Elasticsearch中,一个索引对象可以存储很多不同用途的对象。例如,一个博客应用程序可以保存文章和评论。文档类型让我们轻易地区分单个索引中的不同对象。每个文档可以有不同的结构,但在实际部署中,将文件按类型区分对数据操作有很大帮助。当然,需要记住一个限制,不同的文档类型不能为相同的属性设置不同的类型。例如,在同一索引中的所有文档类型中,一个叫title的字段必须具有相同的类型。
映射
在有关全文搜索基础知识部分,我们提到了分析的过程:为建索引和搜索准备输入文本。文档中的每个字段都必须根据不同类型做相应的分析。举例来说,对数值字段和从网页抓取的文本字段有不同的分析,比如前者的数字不应该按字母顺序排序,后者的第一步是忽略HTML标签,因为它们是无用的信息噪音。Elasticsearch在映射中存储有关字段的信息。每一个文档类型都有自己的映射,即使我们没有明确定义。
现在,我们已经知道Elasticsearch把数据存储在一个或多个索引上,每个索引包含各种类型的文档。我们也知道了每个文档有很多字段,映射定义了Elasticsearch如何对待这些字段。但还有更多,从一开始,Elasticsearch就被设计为能处理数以亿计的文档和每秒数以百计的搜索请求的分布式解决方案。这归功于几个重要的概念,我们现在将更详细地描述。
节点和集群
Elasticsearch可以作为一个独立的单个搜索服务器。不过,为了能够处理大型数据集,实现容错和高可用性,Elasticsearch可以运行在许多互相合作的服务器上。这些服务器称为集群(cluster),形成集群的每个服务器称为节点(node)。
分片
当有大量的文档时,由于内存的限制、硬盘能力、处理能力不足、无法足够快地响应客户端请求等,一个节点可能不够。在这种情况下,数据可以分为较小的称为分片(shard)的部分(其中每个分片都是一个独立的Apache Lucene索引)。每个分片可以放在不同的服务器上,因此,数据可以在集群的节点中传播。当你查询的索引分布在多个分片上时,Elasticsearch会把查询发送给每个相关的分片,并将结果合并在一起,而应用程序并不知道分片的存在。此外,多个分片可以加快索引。
副本
为了提高查询吞吐量或实现高可用性,可以使用分片副本。副本(replica)只是一个分片的精确复制,每个分片可以有零个或多个副本。换句话说,Elasticsearch可以有许多相同的分片,其中之一被自动选择去更改索引操作。这种特殊的分片称为主分片(primary shard),其余称为副本分片(replica shard)。在主分片丢失时,例如该分片数据所在服务器不可用,集群将副本提升为新的主分片。
继续阅读:Elasticsearch的架构是什么样的

Elasticsearch 简介

Elasticsearch 是一款功能强大的搜索引擎,广泛应用于 IT 行业。它由 Elastic 公司开发,代码托管在 GitHub 上。Elasticsearch 是一个分布式、免费和开源的搜索和分析引擎,能够处理各种类型的数据,包括文本、数字、地理空间、结构化和非结构化数据。该引擎基于 Apache Lucene 构建,于 2010 年首次发布。

Elasticsearch 以其简单的 REST API、分布式特性、快速搜索和良好的可扩展性而闻名。它是 Elastic Stack 的核心组件,该 Stack 包括用于数据摄取、丰富、存储、分析和可视化的免费开源工具,通常被称为 ELK Stack。Elastic 公司还拥有 Logstash 和 Kibana 等开源项目,三者共同构成了 ELK 软件栈,形成一个强大的生态圈。

简单来说,Logstash 负责数据采集和处理,Kibana 负责数据展示、分析和监控,而 Elasticsearch 负责数据存储、搜索和分析。随着 Beats 的加入,ELK 软件栈也被称为 ELKB。Beats 是一些轻量级代理,可以收集所有需要的事件,并将其发送至 Elasticsearch 或 Logstash 进行进一步处理。

在 Elastic Stack 架构中,通常使用 Search Service 作为中间接口,向 Elasticsearch 发送请求。通过 Beats 可以采集服务日志和指标信息,并使用 Elastic Stack 提供的 APM 来监控应用和服务的性能。Beats 收集的信息可以直接发送至 Elasticsearch,也可以先发送至 Logstash 进行加工后再发送至 Elasticsearch。Kibana 可以用于数据可视化、分析、管理和监控服务。

在最新的 Elastic Stack 架构中,推荐使用 integration 来采集数据,这有助于集中监控采集端。Elastic Agent 可以安装在采集端,以收集数据,并在 Kibana 中进行集中管理。

Elastic Stack 在全球范围内被广泛应用于不同领域的公司。你可以在 Elastic 的官方网站上找到更多关于客户的信息。

Elasticsearch 是一个基于 Apache Lucene 的开源搜索引擎,使用 Java 编写。它通过简单连贯的 RESTful API 实现全文搜索,并隐藏 Lucene 的复杂性。Elasticsearch 提供了丰富的功能,包括全文搜索、分析、聚合、数据可视化等,并且易于上手。

Elasticsearch 的特点包括高速、可扩展性和搜索结果的相关性。它支持分布式部署,易于扩展,可以处理 petabytes 的数据量。Elasticsearch 还可以根据业务场景进行 relevance 定制。
继续阅读:Elasticsearch 简介