Elasticsearch---(3)Elasticsearch基础

ElasticSearch

1、ElasticSearch简介

ElasticSearch是一个基于Lucene的搜索服务器,它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful接口。

2、ElasticSearch概念

2.1 ElasticSearch核心概念

Near Realtime(NRT)

Elasticsearch是一个近乎实时的搜索平台。从索引文档到可以搜索的时间只有轻微的延迟(通常是1秒)。

Cluster(集群)

集群,集群是一个或多个节点(服务器)的集合,它们共同保存你的整个数据,并提供跨所有节点的联合索引和搜索功能。
集群名称是唯一的,建议命名(es-dev、es-prod、es-test)

Node(节点)

节点是单独的服务器,属于集群中的一部分,节点由名称标识,默认是启动是随机分配UUID,但建议自定义名称,利于管理运维。

Shard(分片)

分片,Elasticsearch可以将一个index中document数据切分成多个shard,分布在多台服务器上存储,每个shard都是一个lucene index,
最多能有document一样多。 

Shard重要性:
1.允许水平分割/扩展内容卷
2.允许跨分片(多个节点)分布和并行操作,从而提高性能与吞吐量。

Replica(副本)

副本,replica主要用来保证高可用(故障转移)、数据备份、增强高吞吐的并行搜索。

Replica重要性:
1.提供了高可用,副本永远都是分配到非主分片相同节点上。
2.允许扩展搜索量/吞吐量,搜索可以在所有副本上并行执行。

注:每个索引都可以分成多个分片,索引也可以被复制0到多次,一旦被复制,每个索引都具有主分片和副本分片。

在创建索引时,可以为每个索引定义分配和副本的数量,创建索引后可以修改副本数量,但不要能修改分片的数量。

默认情况下,每个索引都分配5个主分片和1个副本分片,如果集群存在两个以上节点,则索引会有5个主分片与5个副本分片,每个索引总计有10个分片。

2.2 ElasticSearch的架构

  • ES分布式搜索引擎架构图
    在这里插入图片描述

  • Gateway层
    ES用来存储索引文件的文件系统,主要是用来对数据进行长持久化以及整个集群重启之后可以通过gateway重新恢复数据。
    底层文件系统例如:本地磁盘、共享存储(做snapshot的时候需要用到)、hadoop的HDFS分布式存储、亚马逊的S3。

  • Lucene Directory层
    Lucene的分布式框架,lucene是单价搜索引擎,为了满足ES分布式搜索引擎系统,需要做成一个分布式的运行框架来满足在每个节点上都运行Lucene进行相应的索引,查询以及更新。

  • ES四大模块组件层

    • Index Module:索引模块,对数据建立索引(倒排索引等)。
    • Search Module:搜索模块,对数据进行查询搜索。
    • Mapping:数据映射与解析模块,数据中每个字段会根据建立的表结构通过mapping进行映射解析。若没有建立表结构则默认根据数据类型推测数据结构后自动生成mapping,再根据该mapping解析数据。
    • River:第三方插件模块,可以通过自定义脚本将mysql等数据源通过格式化转换后同步到es集群中。
  • 两大模块组件层

    • Discovery模块:ES是一个集群包含很多节点,相互发现对方节点(服务发现),组成集群进行选主(Master选举)。默认Zen,也能是EC2。
    • Script模块:ES支持多种脚本语言。(mvel、js、python、Etc.等)
  • Transport层
    ES的通信接口Transport层,支持:Thrift、Memcached以及Http,默认为http,JMX是Java的一个远程监控管理框架,ES是通过Java实现的。

  • RESTful接口层
    ES的访问接口,推荐Restful接口,直接发送http请求,方便后续使用nginx做代理、分发,包括可能会做权限的管理,http容易做这方面的管理。
    使用Java客户端是直接调用API,在负载均衡与权限管理不太好做。

2.3 ElasticSearch数据结构

与Mysql对比理解

数据库 记录
MySQL DB Table Row Column
ES Index Type Document Field

Index(索引)

索引,是一堆document的集合,类似与mysql数据库中的database。

Type(类型)

类型,一个index只能有一个type,类似mysql的table表,es可以在Index中建立type(table),通过mapping进行映射

Document(文档)

文档,es中的最小数据单元,es存储的数据是文档型的(json格式),一条数据对应一篇文档即相当mysql中的一行数据,
一个文档中可以有多个字段(等同mysql一行有多列)。    

Field

es中一个文档对应多个列(等同mysql多个列)

Mapping

es中mapping有动态识别功能(等同于mysql的schema)

indexed

建立索引,mysql中一般对经常使用的列增加相应的索引用于提高查询速度,es默认会加上索引,
除非你特殊指定不建立索引只是进行存储用于展示。

Query DSL

类似mysql的sql语句,只是es中使用的是json格式的查询语句。

GET/PUT/POST/DELETE

分别类似mysql的select/update/delete

2.4 CURL命令操作

在linux命令行中执行HTTP协议的请求

2.4.1 CURL命令

访问网页

curl 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值