索引:
本文使用到的代码段:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
# create index PUT /test_index GET _cat/indices DELETE test_index # create document PUT /test_index/doc/1 { "username":"alfred", "age":1 } # create document without id POST /test_index/doc { "username":"tom", "age":20 } # query document GET /test_index/doc/1 # query GET /test_index/doc/_search GET /test_index/doc/_search { "query":{ "term": { "_id": "1" } } } GET test_index/_search # bulk api POST _bulk {"index":{"_index":"test_index","_type":"doc","_id":"3"}} {"username":"alfred","age":20} {"delete":{"_index":"test_index","_type":"doc","_id":"1"}} {"update":{"_id":"2","_index":"test_index","_type":"doc"}} {"doc":{"age":"20"}} # multi_get GET /_mget { "docs": [ {"_index": "test_index","_type": "doc","_id": "3"}, {"_index": "test_index","_type": "doc","_id": "2"} ] } |
第一部分 概述
ES是一个大数据的分析利器,与hadoop,HIVE,Spark,STORM相比,ES更加的快,体现在:
- 上线快:使用门槛低,开发时间短
- 性能好、查询快、实时的展示结果
- 扩展方便,可以快速支撑增长迅猛的数据
ES体系包括4个产品,提供了完整的数据分析工具集合:
其中Beats与Logstash的功能主要有:
常用的使用场景有:
- 搜索引擎
- 日志分析:一般情况下有多台服务器进行负载均衡。
- 指标分析:对数据进行分析。
第二部分 入门
1.常用术语
- document:用于存储在es中的数据文档,相当于mysql中的一行数据
- index:由具有相同字段的文档列表组成,一个index只有一个type,相反与mysql中的表
- node:一个es运行实例,是集群的构成单元。
- cluster:由一个或多个节点组成,对外提供服务
2.Document
是一个json的对象Json Object,由字段(field)组成,常见数据类型如下
- 字符串:text keyword
- 数值型:long integer short byte double float half_float scaled_float
- 布尔型 boolean
- 日期 data
- 二进制 binary
- 范围类型 integer_range float_range long_range double_range date_range
每一个文档都有唯一的id标识,相当于mysql中的主键。
Document MetaData
元数据:用于标注文档的相关信息:
- _index: 文档所在的索引名
- _type: 文档所在的类型名
- _id:文档唯一 id
- _uid: 组合id,由_type 和_id 组成
- _source:文档的原始Json数据,可以从这里获取每个字段的内容
- _all: 整合所有字段内容到该字段,默认禁用
3.index
- 索引中存储具有相同结构的文档
- 每个索引都有自己的mapping定义,用于定义字段名和类型
- 一个集群可以有多个索引,比如nginx日志存储的时候可以按照日期每天生成一个索引来进行存储
4.restapi介绍
es集群对外提供RESTful API
- REST:REpresentational State Transfer
- URL指定资源,如Index、Document等
- Http Method 指明资源操作类型:GET POST DELETE PUT
常用的两种交互方式
- Curl命令行
- Kibana DevTools
5.index API
创建索引api
1 2 3 4 5 |
# Create index PUT /test_index # get index GET _cat/indices |
6.document api
第一种创建文档方式:根据id创建文档
- 每一次更新document version就会+1
- 如果索引不存在会自动创建index和type
第二种创建文档方式:不指定id创建文档,返回的id是es自动生成的,当不需要为文档指定id的时候使用
查询文档:
指定id查询文档:
查询文档:使用json查询格式进行查询
查询的返回结果:
使用bulk批量操作文档,es允许一次操作多个文档,从而减少网络传输开销,提升写入速率:
bulk是多行组成的,每一行是一条数据,action_type指定操作:create只创建,如果文档存在了就会报错,index也是创建但是即便文档已经存在了也会把文档给覆盖掉。delete是根据index来删除,注意error为true的时候证明有报错
_mget批量查询文档: