elk学习笔记-es-文档及索引操作
常见术语
文档 Document
成都创新互联公司致力于互联网网站建设与网站营销,提供成都网站建设、做网站、网站开发、seo优化、网站排名、互联网营销、微信小程序、公众号商城、等建站开发,成都创新互联公司网站建设策划专家,为不同类型的客户提供良好的互联网应用定制解决方案,帮助客户在新的全球化互联网环境中保持优势。
- 用户存储在es中的数据文档,相当于MySQL数据表中的一行数据
索引 index
- 由具有相同字段的文档列表组成,相当于mysql数据库中的表,table
节点 Node
- 一个elasticsearch 的运行实例,是集群的构成单元。
集群 Cluster
- 由一个或多个节点组成,对外提供服务
Document
Json Object,有字段(field)组成,常见数据类型如下:
- 字符串:text,keyword
- 数值型:long,integer,short,byte,double,float,scaled_float
- 布尔:Boolean
- 日期:date
- 二进制:binary
- 范围类型:integer_range,float_range,long_range,double_range,date_range
每个文档都有一个唯一的ID标识
- 自行指定
- es 自动生成
元数据(MetaData),用于标注文档相关信息
- _index:文档所在索引名
- _type:文档所在的类型名
- _id:文档唯一id
- _uid:组合id,由_type和_id组成(6.x _type不再起作用,同_id一样)
- _source:文档的原始Json数据,可以从这里获取每个字段的内容
- _all:整合所有字段内容到该字段,默认禁用
正排索引
- 文档ID到文档内容,单词的关联关系
倒排索引
- 单词到文档ID的关联关系
倒排索引-查询流程
- 通过倒排索引获得"搜索引擎"对应的文档Id有1和3
- 通过正排索引查询1和3的完整内容
- 返回用户最终结果
倒排索引-单词词典
单词词典(Term Dictionary)是倒排索引的重要组成
- 记录所有文档的单词,一般都比较大
- 记录单词倒排列表的关联信息
倒排索引-倒排列表
倒排列表( Posting List )记录了单词对应的文档集合,由倒排索引项( Posting )组成
倒排索引项( Posting )主要包含如下信息:
- 文档Id ,用于获取原始信息
- 单词频率( TF, Term Frequency) , 记录该单词在该文档中的出现次数,用于后续相关性算分
- 位置( Position) ,记录单词在文档中的分词位置(多个) , 用于做词语搜索
- 偏移(Offset),记录单词在文档的开始和结束位置,用于做高亮显示
Index
索引中存储具有相同结构的文档(Document)
- 每个索引都有自己的mapping 定义,用于定义字段名和类型
一个集群可以有多个索引,比如:
- nginx 日志存储的时候可以按照日期每天生成一个索引来存储
nginx-log-2019-01-01
nginx-log-2019-01-02
nginx-log-2019-01-03
创建索引与写入数据
Rest API ()
Elasticsearch 集群对外提供RESTful API
- REST(REpresentational State Transfer)表现层状态转移(对资源进行操作状态会发生变化)
- URL指定资源,如Index,Document
- Http Method 指定资源操作类型,如GET,POST,PUT,DELETE
两种交互方式
- Curl 命令行
- Kibana DevTools
索引 API
es有专门的Index API,用于创建,更新,删除索引配置等
- 创建索引API
PUT /test_index
- 查看现有索引
GET_cat/indices
文档 Document API
es有专门的 Document API
- 创建文档
- 查询文档
- 更新文档
- 删除文档
创建文档:
指定文档ID创建文档:
PUT /test_index/doc/1
{
"username":"kibana",
"version":6.1
}
不指定ID创建文档:
POST /test1_index/doc
{
"username":"kibana",
"version":6.1
}
查询文档
- 指定要查询文档的ID
GET /test_index/doc/1
- 搜索所有文档:_search
GET /test_index/doc/_search //不指定条件查找
GET /test_index/doc/_search { "query": { "term":{ "_id":"1" //指定条件,查找ID为1的文档 } } }
批量创建文档API
es允许一次操作多个文档(增删改查,create创建文档,如果文档已经存在就会报错。index创建文档,如果存在就会覆盖。)
- endpoint 为 _bulk,如下:
POST _bulk {"index":{"_index":"test_index","_type":"doc","_id":"3"}} {"username":"zabbix","version":4} {"delete":{"_index":"test_index","_type":"doc","_id":"1"}} {"update":{"_id":"4","_index":"test_index","_type":"doc"}} {"doc":{"es":"5.0"}}
输出:
{ "took": 979, //查询耗时,单位ms "errors": false, //返回结果,正确或错误 "items": [ //每个操作返回的结果 { "index": { "_index": "test_index", "_type": "doc", "_id": "3", "_version": 1, "result": "created", //创建 "_shards": { "total": 2, "successful": 2, "failed": 0 }, "_seq_no": 0, "_primary_term": 1, "status": 201 } }, { "delete": { "_index": "test_index", "_type": "doc", "_id": "1", "_version": 2, "result": "deleted", //删除 "_shards": { "total": 2, "successful": 2, "failed": 0 }, "_seq_no": 1, "_primary_term": 1, "status": 200 } }, { "update": { "_index": "test_index", "_type": "doc", "_id": "4", "_version": 2, "result": "updated", //更改 "_shards": { "total": 2, "successful": 2, "failed": 0 }, "_seq_no": 3, "_primary_term": 1, "status": 200 } } ] }
批量查询文档
- endpoint 为_mget,如下:(并且可以在一个_mget下获取不同索引的文档)
GET /_mget //查找在test_index索引,id为4和1的文档.
{
"docs":[ //指明要查询的文档id
{
"_index":"test_index",
"_type":"doc",
"_id":"4"
},
{
"_index":"test_index",
"_type":"doc",
"_id":"2"
}
]
}
返回
{
"docs": [
{
"_index": "test_index",
"_type": "doc",
"_id": "4",
"_version": 2,
"found": true,
"_source": {
"username": "es",
"version": 6.1,
"es": "5.0"
}
},
{
"_index": "test_index",
"_type": "doc",
"_id": "2",
"_version": 1,
"found": true,
"_source": {
"username": "zabbix",
"version": 4.2
}
}
]
}
欢迎加入
标题名称:elk学习笔记-es-文档及索引操作
当前路径:http://azwzsj.com/article/gdshsd.html