什么是ElasticSearch
- 基于Apache Lucene构建的开源搜索引擎
- 采用Java编写,提供简单易用的RESTFul API
- 轻松的横向扩展,支持PB级别的结构化或非结构化数据
常见术语
文档 Document
用户存储在es中的数据
Json Object,由字段(Field)组成,常见数据类型如下
- 字符串:text,keyword
- 数值类型:long,integer,short,byte,double,float,half_float,scaled_float
- 布尔:boolean
- 日期:date
- 二进制:binary
- 范围类型:integer_range,float_range,long_range,double_range,date_range
每个文档有唯一的id标识
- 自行生成
- es自动生成
Document MetaData 元数据,用于标注文档的相关信息
- _index:文档所在的索引名
- _type:文档所在的类型名
- _id:文档唯一id
- _uid:组合id,由 _type和 _id组成(6.x _type不再起作用,同 _id一样)
- _source:文档的原始Json数据,可以从这里获取每个字段的内容
- _all:整合所有字段内容到该字段,默认禁用
索引 Index
由具有相同字段的文档列表组成
索引中存储具有相同结构的文档
- 每个索引都有自己的mapping定义,用于定义字段名和类型
一个集群可以有多个索引
节点 Node
一个Elasticsearch的运行实例
集群 Cluster
由一个或多个节点组成,对外服务
Rest API
- REST - REpresentational State Transfer
- URI指定资源,如Index,Document等
- Http Method 指明资源操作类型,如GET,POST,PUT,DELETE等
- API基本格式 http://
: /<索引>/<类型>/<文档id> - 常用HTTP动词GET/PUT/POST/DELETE
常见的交互方式
- Curl命令行
- Kibana DevTools
索引 API
es有专门的Index API,用于创建,更新,删除索引配置等
创建索引
1 | //request |
查看现有索引
1 | //request |
删除索引
1 | //request |
文档 API
创建文档
如果索引不存在则会自动创建
1 | //request |
查询文档
1 | //request |
批量创建文档
es一次创建多个文档,从而减少网络传输开销,提升写入速率
endpoint 为_bulk
1 | //request |
批量查询文档
es允许一次查询多个文档
endpoint为 _maget
1 | //request |