es-1. 概览

137 阅读3分钟

[toc]

前言

Elasticsearch 是一个开源的搜索引擎,建立在一个全文搜索引擎库 Apache Lucene™ 基础之上。 Lucene 可以说是当下最先进、高性能、全功能的搜索引擎库--无论是开源还是私有。  

但是 Lucene 仅仅只是一个库。为了充分发挥其功能,你需要使用 Java 并将 Lucene 直接集成到应用程序中。 更糟糕的是,您可能需要获得信息检索学位才能了解其工作原理。Lucene 非常 复杂。  

Elasticsearch 也是使用 Java 编写的,它的内部使用 Lucene 做索引与搜索,但是它的目的是使全文检索变得简单, 通过隐藏 Lucene 的复杂性,取而代之的提供一套简单一致的 RESTful API。

然而,Elasticsearch 不仅仅是 Lucene,并且也不仅仅只是一个全文搜索引擎. 它可以被下面这样准确的形容:

  • 一个分布式的实时文档存储,每个字段 可以被索引与搜索
  • 一个分布式实时分析搜索引擎
  • 能胜任上百个服务节点的扩展,并支持 PB 级别的结构化或者非结构化数据   Elasticsearch 将所有的功能打包成一个单独的服务,这样你可以通过程序与它提供的简单的 RESTful API 进行通信, 可以使用自己喜欢的编程语言充当 web 客户端,甚至可以使用命令行(去充当这个客户端)。  

就 Elasticsearch 而言,起步很简单。对于初学者来说,它预设了一些适当的默认值,并隐藏了复杂的搜索理论知识。 它 开箱即用 。只需最少的理解,你很快就能具有生产力    

概念

  1. Near RealTime Elastic是一种实时搜索引擎

  2. Cluster 集群是各个节点的集合,保存了所有的数据并提供了数据检索能力。

  • 默认集群的名称是elasticsearch
  • 集群名称不可重复
  • 每个集群至少有一个节点
  1. Node 多个节点构成了集群,集群的数据存储和数据检索也是依赖于节点来完成的,节点的名称是一个随机值,当然你也可以自己修改咯
  • 节点默认加入elasticsearch集群
  • 一个集群的拥有的节点数量不做限制
  • 如果网络上没有一个节点,那么此时新建一个节点将默认加入到elasticsearch集群中
  1. Index 索引是document的集合,通过索引你可以查询,更新,删除document
  • 索引的名称必须全部是小写
  • 集群中你可以定义多个index
  1. Type Type可以理解为Java中的类,Document就是通过该类创建出来的实例

  2. Document Document是可以被检索到的最小数据单元集合

  • Document数据全部是JSON格式
  • Document必须指定其对应type
  1. Shards 数据分片,提供了index数据量无限增大的能力。出现数据分片的原因:单个node容不下某个index中所有的数据。

  2. Replicas 既然有了数据分片,也就意味着数据不在同一个物理节点上存储,那么某次查询就会可能出现某个数据分片所在的节点挂掉的情况,此时的解决方案就是进行数据复制

  • 默认情况下,elasicsearch有5个数据分片和1次复制,这就意味着如果集群中只有两个nodeA和B,加入nodeA保存着源数据,那么经过一个数据复制之后,nodeB中也会存在一份相同的数据