前面我们已经搭建了一个单节点的ES接下来我们就在这个实例上测试。然后呢虽然es支持在命令行使用curl 的方式操作ES即下面这种
但相对麻烦,所以我接下来我会使用kibana的 Dev Tools 来操作es
术语
集群
集群(cluster)即是由多个或一个elasticsearch实例组成的整体。可以通过
GET /_cluster/health
命令查看集群状态
还可用GET /_cluster/state
此命令会列出集群下大多数信息,报错集群下的节点信息,集群元信息,还能看到所有的索引和它们的信息。虽然很强大但信息太多了反倒感觉没啥用了。节点
节点(node)节点就是一个es实例。可以通过
GET /_nodes/state
查看所有节点信息也可以通过GET /_nodes/节点id
查看某一个节点的信息分片
分片(hards)es的最小工作单位,一个分片其实就是一个索引的所有数据的一部分。分片分为主分片(primary shard)和复制分片(replica shard),主分片的作用是把一个索引分成几份来存储,里面存着一份份完整的文档,而复制分片是主分片的备份。可以在新建时设置它们的数量
PUT /my #索引名称
{
"settings": {
"number_of_shards": 3, #主分片数
"number_of_replicas": 1 #复制分片数
}
}
主分片数在新建好以后就不能修改了,除非你删掉重建,但复制分片数量是允许修改的。还记得前面说的单节点的集群因为默认复制分片为1 导致集群状态为yellow的问题么。我们可以通过把索引的复制分片数修改成0来让集群的status变成green。命令为
PUT /my/_settings
{
"number_of_replicas": 0
}
索引
索引(index)这个词在不同的语境有多种含义,一种是名词形式的指一个索引相当于数据库,一种是动词形式的,比如索引一个文档,表示insert操作,还有一种索引指的是倒排索引,相当于关系型数据库中的给字段创建一个索引,用于快速查找。
前面说了分片是es中最小的工作单元,索引索引的数据其实是存在一个个分片上的,它相当于是一个逻辑命名空间类型
类型(type)它相当于数据库中的表,可以对其里面的字段设置类型。
文档
文档就是我们存储在es上的数据,一个文档就相当于数据库中的一行。文档除了我们保存的数据外它还包括它的元数据(metadata),元信息中必须记录的有它的索引,类型,id,
其他区还有_source,_all映射
映射(mapping)相当于数据库的表结构,它能够作用于type,指定字段的类型,指定索引方式,指定分词器。
- -
ES操作
操作es主要分为两种方式 JAVA API(当然还有其他多种客户端)和RESTful API。
我们先来看下后面一种方式,restful是一种基于http协议,以json数据格式交互的操作方式。它的访问格式为
curl -X<VERB> <PROTOCOL>://<HOST>:<PORT>/<PATH>?<QUERY_STRING> -d <BODY>
- VERB HTTP方法: GET , POST , PUT , HEAD , DELETE
- PROTOCOL http或者https协议(只有在Elasticsearch前面有https代理的时候可用)
- HOST Elasticsearch集群中的任何一个节点的主机名,如果是在本地的节点,那么就叫 localhost
- PORT Elasticsearch HTTP服务所在的端口,默认为9200
- PATH API路径(例如_count将返回集群中文档的数量),PATH可以包含多个组件,例如
_cluster/stats或者_nodes/stats/jvm - QUERY_STRING 一些可选的查询请求参数,例如 ?pretty 参数将使请求返回更加美观 易读的JSON数据
- BODY 一个JSON格式的请求主体(如果请求需要的话)
#统计急群内的文档总数可以这样写
curl -XGET 'http://localhost:9200/_count?pretty' -d '
{
"query": {
"match_all": {}
}
}
因为我是在kibana上进行操作的所以我的访问方式为 GET /_cluster/health
<VERB> /<PATH>?<QUERY_STRING> -d <BODY>
一些有用的查看命令,有待增加
- 查看集群健康状态 GET /_cluster/health
能看到集群名字和集群状态
- 查看集群信息 GET /_cluster/state
能看到集群下所有节点信息,所有索引的信息
- 查看节点状态GET /_nodes/stats/
它会列出所有节点的信息包括节点上搜索次数,如果想看某一节点的信息使用GET /_nodes/节点id
- 查看索引的设置GET /索引名/_settings
- 查看索引的映射GET /索引名/_mapping
- 查看索引下文档数GET 索引名/_count
- 查看集群下所有的索引 GET /_cat/indices?v
官方API文档: https://www.elastic.co/guide/en/elasticsearch/reference/5.6/index.html
官方中文指南:https://www.elastic.co/guide/cn/elasticsearch/guide/current/index.html