1)Elasticsearch是一个高度可伸缩的开源全文搜索和分析引擎。它允许你以近实时的方式快速存储、搜索和分析大量的数据。它通常被用作基础的技术来赋予应用程序复杂的搜索特性和需求。
2)集群:一个集群是由一个或多个节点(服务器)组成的,通过所有的节点一起保存你的全部数据并且提供联合索引和搜索功能的节点集合。每个集群有一个唯一的名称标识,默认是“elasticsearch”。这个名称非常重要,因为一个节点(Node)只有设置了这个名称才能加入集群,成为集群的一部分。
3)节点:一个节点是一个单一的服务器,是你的集群的一部分,存储数据,并且参与集群的索引和搜索功能。跟集群一样,节点在启动时也会被分配一个唯一的标识名称,这个名称默认是一个随机的UUID(Universally Unique IDentifier)。如果你不想用默认的名称,你可以自己定义节点的名称。这个名称对于管理集群节点,识别哪台服务器对应集群中的哪个节点有重要的作用。
4)索引:一个索引就是含有某些相似特性的文档的集合。类似与数据库的概念
5)文档:一个文档是一个可被索引的数据的基础单元。类似与数据库中的表
6)分片和复制:我们在一个索引里存储的数据,潜在的情况下可能会超过单节点硬件的存储限制。例如,单个索引有上千万个文档需要占用1TB的硬盘存储空间,但是一台机器的硬盘可能没有这么大,或者是即便有这么大,但是单个节点在提供搜索服务时会响应缓慢。
为了解决这个问题,Elasticsearch提供了分片的能力,它可以将你的索引细分成多个部分。当你创建一个索引的时候,你可以简单的定义你想要的分片的数量。每个分片本身是一个全功能的完全独立的“索引”,它可以部署在集群中的任何节点上。
分片对于以下两个主要原因很重要:
它允许你水平切分你的内容卷
它允许你通过分片来分布和并行化执行操作来应对日益增长的执行量
一个分片是如何被分配以及文档又是如何被聚集起来以应对搜索请求的,它的实现技术由Elasticsearch完全管理,并且对用户是透明的。
在一个网络环境下或者是云环境下,故障可能会随时发生,有一个故障恢复机制是非常有用并且是高度推荐的,以防一个分片或节点不明原因下线,或者因为一些原因去除没有了。为了达到这个目的,Elasticsearch允许你制作分片的一个或多个拷贝放入一个叫做复制分片或短暂复制品中。
复制对于以下两个主要原因很重要:
高可用。它提供了高可用来以防分片或节点宕机。为此,一个非常重要的注意点是绝对不要将一个分片的拷贝放在跟这个分片相同的机器上。
高并发。它允许你的分片可以提供超出自身吞吐量的搜索服务,搜索行为可以在分片所有的拷贝中并行执行。
总结一下,每个索引可以被切分成多个分片,一个索引可以被复制零次(就是没有复制)或多次。一旦被复制,每个索引将会有一些主分片(就是那些最原始不是被复制出来的分片),还有一些复制分片(就是那些通过复制主分片得到的分片)。
主分片和复制分片的数量可以在索引被创建时指定。索引被创建后,你可以随时动态修改复制分片的数量,但是不能修改主分片的数量。
默认情况下,在Elasticsearch中的每个索引被分配5个主分片和一份拷贝,这意味着假设你的集群中至少有两个节点,你的索引将会有5个主分片和5个复制分片(每个主分片对应一个复制分片,5个复制分片组成一个完整拷贝),总共每个索引有10个分片。
每个Elasticsearch分片是一个Lucene索引。在一个Lucene索引中有一个文档数量的最大值。截至LUCENE-5843,这个限制是2,147,483,519 (= Integer.MAX_VALUE - 128)个文档。你可以使用_cat/shards API监控分片大小。
7)常用查询:
1.GET /_cat/health?v 检查集群健康状态
Green - 一切运行正常(集群功能齐全)
Yellow - 所有数据是可以获取的,但是一些复制品还没有被分配(集群功能齐全)
Red - 一些数据因为一些原因获取不到(集群部分功能不可用)
2.GET /_cat/nodes?v 获取集群中的节点列表(最后的是节点名)
3.GET /_cat/indices?v 查询索引列表
返回结果告诉我们,我们现在有1个名称为“customer”的索引,
并且有5个主分片和1个拷 贝(默认情况),并且里面包含0个文档。
4.PUT /customer?pretty 创建一个索引
5.创建一个id为1的文档
你不需要在将一个文档加入一个索引前明确的将这个索引预先创建好。
在上面我们创建文档的例子中,如果这个customer索引事先不存在,
Elasticsearch会自动创建customer索引。
PUT /customer/doc/1?pretty
{
"name": "John Doe"
}
6.你不需要在将一个文档加入一个索引前明确的将这个索引预先创建好。在上面我们创建文档的例子中,如果这个customer索引事先不存在,Elasticsearch会自动创建customer索引。
7.根据id查询数据 GET /customer/doc/1?pretty
8.删除一个索引 DELETE /customer?pretty
9.更新数据 POST /customer/doc/1/_update?pretty
{
"doc": { "name": "hi liming" }
}
10.更新数据 并添加新的属性 POST /customer/doc/1/_update?pretty
{
"doc": { "name": "Jane Doe", "age": 20 }
}
11.使用脚本更新数据 POST /customer/doc/1/_update?pretty
{
"script" : "ctx._source.age += 5"
}
12.删除一条数据 DELETE /customer/doc/2?pretty
网友评论