博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ES入门(一)Elasticsearch简介:基本概念
阅读量:4299 次
发布时间:2019-05-27

本文共 2271 字,大约阅读时间需要 7 分钟。

ES入门(一)Elasticsearch简介:基本概念

lucene和elasticsearch的前世今生 


    lucene,最先进、功能最强大的搜索库,直接基于lucene开发,非常复杂,api复杂(实现一些简单的功能,写大量的java代码),需要深入理解原理(各种索引结构)。

   elasticsearch,基于lucene,隐藏复杂性,提供简单易用的restful api接口、java api接口(还有其他语言的api接口)。

  • 分布式的文档存储引擎
  • 分布式的搜索引擎和分析引擎
  • 分布式,支持PB级数据

索引:


    索引,包含一堆有相似结构的文档数据,比如可以有一个客户索引,商品分类索引,订单索引,索引有一个名称。一个index包含很多document,一个index就代表了一类类似的或者相同的document。比如说建立一个product index,商品索引,里面可能就存放了所有的商品数据,所有的商品document。

创建索引


创建索引my_index_001及修改索引设置

PUT /my_index_001{  "settings": {    "number_of_shards" : 1,    "number_of_replicas" : 0  }}

更改副本数量:

PUT /my_index_001/_settings{  "number_of_replicas": 2}

 

文档(document):


    文档,es中的最小数据单元,一个document可以是一条客户数据,一条商品分类数据,一条订单数据,通常用JSON数据结构表示,每个index下的type中,都可以去存储多个document。一个document里面有多个field,每个field就是一个数据字段。

映射(mapping):


    ES中的索引模式叫做Mapping。索引中的每个文档都有一个type,每个type拥有自己的模式或者模式定义。用户可以设置一些参数,来决定如何将输入文本分割为词条,哪些词条应该被过滤掉,或者哪些附加处理时有必要被调用的。如排序时所需的字段内容信息,者就是mapping扮演的角色。

与关系型数据库对比关系如下:

 

近实时(NRT):


    近实时,两个意思,从写入数据到数据可以被搜索到有一个小延迟(大概1秒);基于es执行搜索和分析可以达到秒级。

节点(node):


    节点,集群中的一个节点,节点也有一个名称(默认是随机分配的),节点名称很重要(在执行运维管理操作的时候),默认节点会去加入一个名称为“elasticsearch”的集群,如果直接启动一堆节点,那么它们会自动组成一个elasticsearch集群,当然一个节点也可以组成一个elasticsearch集群

集群(cluster):


    集群是一组具有相同cluster.name的节点集合,他们协同工作,共享数据并提供故障转移和扩展功能,当然一个节点也可以组成一个集群。

    集群由唯一名称标识,默认情况下为“elasticsearch”。此名称很重要,因为如果节点设置为按名称加入集群的话,则该节点只能是集群的一部分。
    确保不同的环境中使用不同的集群名称,否则最终会导致节点加入错误的集群。
    集群状态通过 绿,黄,红 来标识:

  • 绿色 - 一切都很好(集群功能齐全)。
  • 黄色 - 所有数据均可用,但尚未分配一些副本(集群功能齐全)。
  • 红色 - 某些数据由于某种原因不可用(集群部分功能)。

    注意:当群集为红色时,它将继续提供来自可用分片的搜索请求,但您可能需要尽快修复它,因为存在未分配的分片。

分片(shard):


    单台机器无法存储大量数据,es可以将一个索引中的数据切分为多个shard,分布在多台服务器上存储。有了shard就可以横向扩展,存储更多数据,让搜索和分析等操作分布到多台服务器上去执行,提升吞吐量和性能。每个shard都是一个lucene index。

    设置分片的目的及原因主要是:

  • 它允许您水平拆分/缩放内容量;
  • 它允许您跨分片(可能在多个节点上)分布和并行化操作,从而提高性能/吞吐量;
  • 分片的分布方式以及如何将其文档聚合回搜索请求的机制完全由 Elasticsearch 管理,对用户而言是透明的。

    在可能随时发生故障的网络/云环境中,分片非常有用,建议使用故障转移机制,以防分片/节点以某种方式脱机或因任何原因消失。为此,Elasticsearch 允许您将索引的分片的一个或多个副本制作成所谓的副本分片或简称副本。

副本(replica):


    任何一个服务器随时可能故障或宕机,此时shard可能就会丢失,因此可以为每个shard创建多个replica副本。replica可以在shard故障时提供备用服务,保证数据不丢失,多个replica还可以提升搜索操作的吞吐量和性能。primary shard(建立索引时一次设置,不能修改,默认5个),replica shard(随时修改数量,默认1个),默认每个索引10个shard,5个primary shard,5个replica shard,最小的高可用配置,是2台服务器。

    总而言之,每个索引可以拆分为多个分片。索引也可以复制为零次(表示没有副本)或更多次。复制之后,每个索引将具有主分片(从原始分片复制而来的)和复制分片(主分片的副本)。
    可以在创建索引时为每个索引定义分片和副本的数量。创建索引后,您也可以随时动态更改副本数,但这不是一项轻松的任务,所以预先计划正确数量的分片是最佳方法。

转载地址:http://eupws.baihongyu.com/

你可能感兴趣的文章
对于模拟交易所引发的思考
查看>>
高频交易的几种策略
查看>>
量化策略回测TRIXKDJ
查看>>
量化策略回测唐安奇通道
查看>>
CTA策略如何过滤部分震荡行情?
查看>>
量化策略回测DualThrust
查看>>
量化策略回测BoolC
查看>>
量化策略回测DCCV2
查看>>
mongodb查询优化
查看>>
五步git操作搞定Github中fork的项目与原作者同步
查看>>
git 删除远程分支
查看>>
删远端分支报错remote refs do not exist或git: refusing to delete the current branch解决方法
查看>>
python multiprocessing遇到Can’t pickle instancemethod问题
查看>>
APP真机测试及发布
查看>>
iOS学习之 plist文件的读写
查看>>
通知机制 (Notifications)
查看>>
10 Things You Need To Know About Cocoa Auto Layout
查看>>
C指针声明解读之左右法则
查看>>
一个异步网络请求的坑:关于NSURLConnection和NSRunLoopCommonModes
查看>>
iOS 如何放大按钮点击热区
查看>>