【ELK学习】初识ElasticSearch

ES(elasticsearch) 是一个高可扩展的、开源的全文检索和分析引擎,它容许你存储、检索、分析海量数据,以一种快到近乎实时的速度。html

ES用例场景:apache

  使用ES存储商品目录、清单,提供检索、输入提示的服务。api

  使用ES收集日志或交易数据,且你想分析和挖掘这些数据来查看趋势、统计、总览和异常。可使用Logstash来收集、聚合而且解析你的数据,而后将数据喂给ES,而后你就能够在ES中运行检索和聚合来挖掘任何你感兴趣的信息。服务器

  使用ES用于分析和商业智能的需求,能够快速调研、分析、可视化以及基于大数据即时提问。使用Kibana构建自定义的面板能够可视化你的数据切面,以不一样的角度。网络

基本概念并发

  NRT:几乎实时,指:从你索引一个文档的时间到它能够检索到的时间的延时(一般一秒)。elasticsearch

  Cluster:集群,是一个或者多个节点(服务器)的集合。它们持有全部的数据,而且提供跨全部节点来联合索引和检索能力,一个集群默认有一个惟一的名字为“elasticsearch”,这个名字很重要,由于一个节点只能是集群的一部分,若是该节点经过它的名字设置加入集群。ide

  Node:节点,是一个服务器,一个集群的一部分,存储数据,参与集群的索引和搜索能力。节点也有名字,默认是随机的UUID,能够自定义。一个节点能够配置加入一个指定的集群名,默认地,每隔节点被设置加入一个名为“elasticsearch”的集群,意味着,若是你在网络中启动多个节点(假设这些节点网络互通),它们会自动地造成一个集群(elasticsearch)。在单个节点,你能够想要多少就有多个节点,此外,若是没有其余elasticsearch节点在网络中,启动单个节点会自动造成一个集群(elasticsearch),该集群有一个节点。性能

  Index:索引,是有某种程度类似特征的文档的集合。你能够有客户数据的索引,产品目录的索引,甚至其余数据的索引。一个索引有一个名字(全小写)。当执行索引、检索、更新、删除操做时,这个名字被用来引用索引。在单个集群中,你能够定义多个索引。大数据

  Document:文档,是能够被索引的信息的基本单元。文档被描述为JSON结构,这是一种广泛使用的互联网数据交换格式。虽然文档是物理驻留在索引中,一个文档实际上必须被索引/分配到索引中的一个类型中。

  分片和复制:单个索引可能存储大量的数据,以致于超过单机的存储能力。例如十亿文档占据1TB的磁盘空间可能不太适合单机节点,或者也可能太慢以致于不能从单节点服务请求。为了解决这个问题,elasticsearch提供了分解索引为多个分片,当你建立一个索引你能够简单的定义分片的数量,每一个碎片自己都是一个彻底有效的、独立的“索引”,能够托管在集群中的任何节点。

  分片是很重要的,有俩个主要缘由:它容许你水平分割/扩展你的内容卷积;它容许你跨分片(可能在多个节点上)分发和并行化操做,以此提升性能和吞吐量。

       一个分片是如何分发,以及它的文档是如何被聚合到检索请求的机制是彻底由Elasticsearch管理,并对用户透明的。

  在一个网络或云环境中,失败是随时可能发生的,高度推荐有一个故障转移机制以避免单个分片或者节点下线或者消失(因某种缘由),所以Elasticsearch容许你制做你的索引的一个或者多个拷贝,它被称之为“复制分片”,或者简单称之为“复制”。

  复制是很重要的,有俩个主要缘由:它提供了高可用性,以避免分片或者节点失败,所以,须要注意一个复制分片不会和主分片分配到同一个节点,复制分片从主分片复制数据。它容许你扩展搜索卷和吞吐量,由于检索能够在全部复制分片上并发的执行。

  总而言之,每一个索引能够被分割成多个分片,每一个索引也能够复制0次或屡次。一旦复制,每一个索引会有主分片(被复制的原始分片)和复制分片(主分片的拷贝)。分片和复制的数量在索引建立的时候定义,在建立以后你能够任意时刻动态修改,使用_shrink和_split apis改变已存在索引的分片数量。这个任务很重,预先规划好分片数量才是最佳办法。默认地,Elasticsearch中每一个索引都分配了5个主分片和一个复制,意味着,若是你至少有俩个节点在集群中,你的索引会有五个主分片,以及另外五个复制分片(1个彻底复制),总共每一个索引十个分片。

注意:每一个 Elasticsearch shard 是一个 Lucene index. 单个Lucene索引有最大文档数量。依据 LUCENE-5843, 文档数量限制为 2,147,483,519 (= Integer.MAX_VALUE - 128) documents. You can monitor shard sizes using the _cat/shards API.

相关文章
相关标签/搜索