ES基本操作

ES全名Elasticsearch,

官方网站:https://www.elastic.co/
官方文档地址:https://www.elastic.co/guide/en/elasticsearch/reference/5.1/index.html

中文版权威指南:https://www.elastic.co/guide/cn/elasticsearch/guide/current/index.html

一 介绍

       ES是一个分布式的全文检索引擎,基于著名的全文索引开发包apache luceneESlucene进行了分布式化,并提供REST api提供开箱即用的索引、搜索服务。ES提供便捷的扩展机制,新的节点可以动态加入已有集群,提高集群的存储、计算能力。

1基本概念

ES集群(cluster):ES一般以集群的方式对外提供服务,通过集群提高服务的计算和存储能力。一个集群可以是1台或者N台物理服务器。所有的查询请求可以被负载到集群中所有的机器。

节点:一个节点就是一个Elasticsearch Java进程,每个节点维护一定数量的数据,执行这部分数据的查询请求。一般一台物理机会部署多个节点,每个对应一块物理盘。

主节点(master):一个ES集群一般由多个节点组成,集群在启动后,会从所有的节点中选一个为master节点。它维护集群全局的元信息。如,集群里有哪些节点,哪些索引,索引的分片等,集群的状态更新和发布。同时,master节点也具有存储和查询功能。

数据节点(data node):用来存储数据,响应查询请求,接受并处理master节点发送的集群状态信息。

索引(index):一个索引由多个物理分片组成,分布在集群的多个节点上。

分片(shard):一个物理分片是一个完整的Lucene索引,是搜索的最小单位。每个分片可以包含1到N个段(segment)。

副本:ES在分布存储的过程中,为了提高数据的安全性,并充分利用集群内服务器的计算资源,可以给分片设置多个副本,分散存储于多台服务器,每个副本的数据是完全一样的,都可以提供搜索,当某个分片出现问题时,可以通过副本进行恢复。

段(segment):一个段就是一批具有相同文件名,不同文件名厚的Lucene文件集合。随着数据的增加,小的段合并成大的段,以提高资源利用率。

文档:ES中的文档类似于关系数据库中的一条记录,文档包含多个字段(field),每个filed可以有自己的数据类型,也可以有自己的索引分析方式。

translog:新索引的数据在内存里,为了防止这些数据由于断点或者进程意外终止而丢失,每个分片有自己对应的一个translog,所有的索引和删除操作记录在translog里面。如果发生意外可以通过replay translog里的操作而恢复数据。

查询:集群中的每个节点都可以接受查询请求,接受到客户端查询请求的节点我们称之为协调点,该节点会解析查询的索引并根据索引分片在集群中的分布情况将查询分发到对应的节点,等待所有分片的返回,最终在协调点进行查询结果的汇总返回客户端。

对应关系
Elasticsearch 关系数据库(如,MySQL)
index database
type table
document record
filed column

2特点

基本特点:

  • 实时数据
  • 实时分析
  • 分布式
  • 高可用性
  • 多用户
  • 全文搜索(先建立索引,再对索引进行搜索的过程就叫全文检索)
  • 面向文档
  • rest风格API,每个操作的持久性
  • 开源 

 

二 基本操作

ES基本操作命令
序号 操作 命令 说明
1 创建索引 curl -sXPUT "localhost:9200/test?pretty" -d'{"settings":{"index":{"number_of_shards":3,"number_of_replicas":2}}}' 创建一个分片数3,副本为2的索引。(一般分片数默认是5,如果只有一台服务器则副本数为0)
2 查询 集群状态

curl -sXGET localhost:9200/_cat/health?pretty

// curl -sXGET localhost:9200/_cluster/health?pretty

建议第2种方式。集群的状态有:green、yellow和red。正常情况下是green。

颜色 意义
green 所有主要和复制的分片都可用
yellow 所有主分片可用,但福分片不一定可用
red 不是所有主分片可用
3 集群节点

curl -sXGET localhost:9200/_cat/nodes?v

返回所有节点信息
4 节点属性

curl -sXGET localhost:9200/_cat/nodeattrs?v

 
5 所有索引分片信息

curl -sXGET localhost:9200/_cat/shards?v

 
6 配置查询

curl -sXGET localhost:9200/_cluster/settings?pretty

 
7 所有索引

curl -sXGET localhost:9200/_cat/indices?v

返回所有的索引信息
8 单个索引

curl -sXGET localhost:9200/_cat/indices?v | grep '索引名'

 
9 索引具体信息

curl -sXGET localhost:9200/索引?pretty

返回这个索引的信息,settings(分片、副本等)和mappings(字段、类型等)的相关信息
10 索引的配置 curl -sXGET localhost:9200/索引名/_settings?pretty pretty,返回结果格式美观。
11 单个索引的分片信息 curl -sXGET localhost:9200/_cat/shards/索引名?v v,让输出内容表格显示表头。
12 所有索引的doc数量

curl -sXGET localhost:9200/_cat/count?v

相当于查询日志总量。
13 索引数据 curl -sXGET localhost:9200/索引名/_search?pretty 默认显示最近的10条。
14 查看最近3条数据 curl -sXGET "localhost:9200/索引名/_search?pretty" -d'{"query":{"match_all":{}},"size":3}' 指定size大小。
15 索引匹配数据查询

curl -sXGET "localhost:9200/索引名/_search?pretty" -d'{"query":{"match":{"字段":"字段值"}},
"size":3}'

//curl -sXGET "localhost:9200/索引名/_search?pretty" -d'{"query":{"term":{"字段":"字段值"}},
"size":3}'

match:模糊匹配。会提供一个分析器;

term:精确查询,不分析。

16

修改

关闭所有索引

curl -XPOST localhost:9200/_close

 
17 开启所有索引

curl –XPOST localhost:9200/_open

 
18

关闭指定索引

curl –XPOST localhost:9200/索引名/_close

 
19

开启指定索引

curl –XPOST localhost:9200/索引名/_open

 
20 删除 删除单个索引

curl  -XDELETE localhost:9200/索引名

 
21

删除所有索引

curl -sXPUT "http://localhost:9200/_cluster/settings" -d

'{"persistent":{"action.destructive_requires_name":false}}‘

 

curl -XDELETE localhost:9200/_all

 
22 清除缓存 curl -XGET localhost:9200/_cache/clear?pretty  
         

 

 

 

 

你可能感兴趣的:(数据库相关)