内容简介:接着上一篇ElasticSearch搭建的环境继续学习,从概念开始,本篇文章将介绍ElasticSearch中的一些重要概念及部分原理性概念,以下内容中简称为ES。1.NRT:英文全称为Near RrealTime。中文意思为近实时,从写入数据到可以被搜索到之间有一个小于1s的延迟,使用ES进行搜索和数据分析可以达到秒级的速度。2.cluster:表示由多个节点组成的ES集群(常见集群种类:HA,HB,HP,具体可自行查阅资料)。集群有一个名称,默认是elasticsearch,可以在配置文件中通过clus
接着上一篇ElasticSearch搭建的环境继续学习,从概念开始,本篇文章将介绍ElasticSearch中的一些重要概念及部分原理性概念,以下内容中简称为ES。
一、ES部分名词解释
1.NRT:英文全称为Near RrealTime。中文意思为近实时,从写入数据到可以被搜索到之间有一个小于1s的延迟,使用ES进行搜索和数据分析可以达到秒级的速度。
注:由于ES写入数据到可以被索引到之间有延迟,所以对于业务中包含有保存幂等性需求时,需要注意;
在写完之后手动执行刷新操作,然后再查询,否则会可能出现数据写重的情况。
2.cluster:表示由多个节点组成的ES集群(常见集群种类:HA,HB,HP,具体可自行查阅资料)。集群有一个名称,默认是elasticsearch,可以在配置文件中通过cluster.name字段手动指定,集群最小节点数可以为1个。
3.node:集群中的节点。节点也有自己的名称,默认是随机分配的,默认情况下,节点启动之后,会自动去寻找名称为cluster.name字段所指定的集群。如果在默认不修改cluster.name的情况下,启动多个节点之后,它们会自动组成一个ES集群。
4.document:文档。它是ES中的最小数据单元,通常使用JSON数据结构表示,每个index(索引)的type(类型)中,都可以存储多个Document。
5.field:表示字段,具体指的是Document中的某一个数据字段。比如学生信息文档中的学号字段。
6.index:索引。是多个有相似结构的文档数据的集合,类似于 MySQL 数据库中的数据库概念。
7.type:类型。表示某个索引下面的某种相同数据结构的结合。在较低版本的ES中,一个索引中可以有多个type,高版本中一个索引下只能有一个类型,官方建议每个索引下最好只有一个type。如果一个index下有多个type,在不同的搜索场景下可能会相互有影响,比如:一个索引下面有一个用于统计分析的type和一个用于搜索的type,如果统计请求比较慢,有可能会阻塞到查询请求。
8.shard:每个index会被拆分为多个shard,每个shard就会存放这个index的一部分数据,这此shard会散落在多台服务器上。有了shard就可以进行横向扩展,存储更多数据,让搜索和分析等操作分布到多台服务器上去执行,提升吞吐量和性能。shard又分为replica shard和primary shard,每个shard都是一个lucene index.
9.replica:每个服务器随时可能故障或宕机,此时shard就可以会丢失,因此可以为每一个shard创建多个replica副本。replica可以在shard故障时提供备用服务。保证数据不丢失或者丢失很少,多个replica还可以提升搜索操作的吞吐量和性能。
注意: primary shard:建立索引时一次设置,不能修改,默认5个; replica shard:可随时修改,默认1个),默认每个索引10个shard,5个primary shard, 5个replica shard,最小的高可用配置,是2台服务器。
二、ES的文档数据格式的优点
1.可以提供复杂的面向对象的数据结构;
2.如果不适用ES,使用传统的关系型数据库,复杂的对象只能拍平,放到多个关联表中,查询的时候需要查询多个表,而且还得重新组合成复杂对象,特别麻烦;
3.基于ES面向文档的特性,而且提供了倒排索引,所以可以胜任复杂的查询和检索需求;
4.使用传统,流行的文档对象来存储,很容易处理;
三、ES集群简单管理
1.集群健康状态
使用_cat相关api查看,如下:
[root@es-master ~]# curl http://localhost:9200/_cat/health?pretty #返回结果 1549092107 02:21:47 elasticsearch green 3 3 134 67 0 0 0 0 - 100.0%
可以看出,如果集群中的所有节点都正常启动,整个集群的状态为green;
2.集群的三种状态
(1)红(red):不是所有的primary shard都是active状态的,部分索引有数据丢失了; (2)黄(yellow):每个索引的primary shard都是active状态的,但是部分replica shard不是active状态,处于不可用的状态,此时可以继续使用; (3)绿(green):每个索引的primary shard和replica shard都是active状态的;
集群启动时状态变化过程:
集群启动的时候,首先会有某些节点先启动,这些节点会被作为主节点,在所有的主节点未完全启动之前,集群此时处于red状态; 当主节点全部启动之后,集群状态会变为yellow状态; 所有的replica节点都启动完成之后,集群中的所有节点都已经齐全,此时集群变为green状态;
3._cat中的重要api
- 查看集群中的节点数
[root@es-master ~]# curl http://localhost:9200/_cat/nodes?pretty 192.168.199.12 29 95 12 0.00 0.08 0.06 mdi * es-node2 192.168.199.11 41 88 25 0.64 0.75 0.57 mdi - es-node1 192.168.199.11 20 88 25 0.64 0.75 0.57 mdi - es-node3
表示集群中有三个节点,es-node1,es-node2,es-node3;
- 查看集群中的分片数
[root@es-master ~]# curl http://localhost:9200/_cat/shards?pretty student_index 3 p STARTED 1 4.3kb 192.168.199.11 es-node1 student_index 3 r STARTED 1 4.3kb 192.168.199.11 es-node3 student_index 2 p STARTED 2 8.5kb 192.168.199.12 es-node2 student_index 2 r STARTED 2 8.5kb 192.168.199.11 es-node3 student_index 1 r STARTED 1 4.4kb 192.168.199.11 es-node1 student_index 1 p STARTED 1 4.4kb 192.168.199.12 es-node2 student_index 4 p STARTED 1 4.4kb 192.168.199.11 es-node1 student_index 4 r STARTED 1 4.4kb 192.168.199.11 es-node3 student_index 0 p STARTED 0 261b 192.168.199.12 es-node2 student_index 0 r STARTED 0 261b 192.168.199.11 es-node3
表示student_index索引默认有10个分片,5个primary和5个replica;
- 查看集群中的索引列表
[root@es-master ~]# curl http://localhost:9200/_cat/indices?v health status index uuid pri rep docs.count docs.deleted store.size pri.store.size green open .monitoring-es-6-2019.01.27 kXMATwLHShGoGrAhOVPZqg 1 1 39439 432 48.3mb 24.1mb green open .monitoring-kibana-6-2019.01.27 PpgWm9PSRXKU385_pQis2g 1 1 1512 0 1mb 531.7kb green open .elastichq 19vJX4__TcunPjMCfybmdA 5 1 1 0 14kb 7kb green open student_index 8VHSS7wyQIadWBcNWJsGPQ 5 1 5 0 43.9kb 21.9kb green open student VXHrKYNcSRKELb7WSzToCw 5 1 2 0 23.8kb 11.9kb
默认展示的是系统索引和自己创建的索引,参数v表示查看详细信息;
- _cat还有其他api,但是不是很常用,如果需要,可以通过如下命令查看即可
[root@es-master ~]# curl http://localhost:9200/_cat =^.^= /_cat/allocation /_cat/shards /_cat/nodes /_cat/tasks ...
四、ES简单操作
此处以电商系统商品搜索为例,使用kibana图形化操作界面,介绍ES的简单操作。
1.创建
用法:
PUT /index_name/type_name/id
{}
例如:创建一个索引名称为shop_index,类型为productInfo,id为1的索引
PUT /shop_index/productInfo/1
{
"name": "HuaWei Mate8",
"desc": "Cheap and easy to use",
"price": 2500,
"producer": "HuaWei Producer",
"tags": [
"Cheap",
"Fast"
]
}
2.查询
用法:
GET /index_name/type_name/id
例如:查询id为1的商品信息
GET /shop_index/productInfo/1
{
"_index": "shop_index",
"_type": "productInfo",
"_id": "1",
"_version": 1,
"found": true,
"_source": {
"name": "HuaWei Mate8",
"desc": "Cheap and easy to use",
"price": 2500,
"producer": "HuaWei Producer",
"tags": [
"Cheap",
"Fast"
]
}
}
3.修改
- 方法一:替换,通过ID替换,如果文档存在,则直接覆盖
用法:
PUT /index_name/type_name/id
{}
例如:将商品价格修改为2400
PUT /shop_index/productInfo/1
{
"name": "HuaWei Mate8",
"desc": "Cheap and easy to use",
"price": 2400,
"producer": "HuaWei Producer",
"tags": [
"Cheap",
"Fast"
]
}
注意:替换某个文档时,需要带着文档中的所有字段,否则未带着的字段会丢失,切记!!!
- 方法二:通过ID更新部分字段
用法:
POST /index_name/type_name/id/_update
{}
例如:将上述商品的价格改为2200
POST /shop_index/productInfo/1/_update
{
"doc": {
"price": 2200
}
}
4.删除
用法:
DELETE /index_index/type_index/id
例如:删除id为1的商品记录:
DELETE /shop_index/productInfo/1
本篇文章简单介绍了ES的一些重要概念及基本用法,为后续内容做铺垫,下篇文章将继续ES的多种搜索方式!欢迎评论转发!
以上所述就是小编给大家介绍的《ElasticSearch重要概念及简单用法》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- Apache Pig的一些基础概念及用法总结(2)
- Apache Pig的一些基础概念及用法总结(2)
- Apache Pig的一些基础概念及用法总结(2)
- Go学习日志:基本概念及通道
- 喧哗的背后:Serverless 的概念及挑战
- Python类、模块、包的概念及区别
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Introduction to Computation and Programming Using Python
John V. Guttag / The MIT Press / 2013-7 / USD 25.00
This book introduces students with little or no prior programming experience to the art of computational problem solving using Python and various Python libraries, including PyLab. It provides student......一起来看看 《Introduction to Computation and Programming Using Python》 这本书的介绍吧!