基本概念
-
索引(index) 一个 索引 类似于传统关系数据库中的一个 表 ,是一个存储关系型文档的地方
-
文档类型(type) 【7.0版本后移除】
-
文档(doc)
一个doc代表索引里的一条数据,像数据库表里的一条记录,doc是用json格式来存储数据
es架构设计
架构各组件简单释义:
-
gateway 底层存储系统,一般为文件系统,支持多种类型。
-
distributed lucence directory 基于lucence的分布式框架,封装了建立倒排索引、数据存储、translog、segment等实现。
-
模块层 ES的主要模块,包含索引模块、搜索模块、映射模块。
-
Discovery 集群node发现模块,用于集群node之间的通信,选举coordinate node操作,支持多种发现机制,如zen,ec2等。
-
script 脚本解析模块,用来支持在查询语句中编写的脚本,如painless,groovy,python等。
-
plugins 第三方插件,各种高级功能可由插件提供,支持定制。
-
transport/jmx 通信模块,数据传输,底层使用netty框架
-
restful/node 对外提供的访问Elasticsearch集群的接口
-
x-pack elasticsearch的一个扩展包,集成安全、警告、监视、图形和报告功能,无缝接入,可插拔设计。
图片来源:掘金
请求逻辑图
来源:架构师修炼
创建、删除、变更操作
创建索引
PUT /<index>
PUT /report_index_1
{
"settings": {
"number_of_shards": 3,
"number_of_replicas": 1
},
"mappings": {
"properties": {
"action_cost": {
"type": "double"
},
"activation": {
"type": "long"
},
"advertiser_name": {
"type": "text",
"fields":{
"keyword":{
"type":"keyword"
}
}
},
"cover_url": {
"type": "keyword"
},
"created_at": {
"type": "date",
"format": "yyyy-MM-dd HH:mm:ss || yyyy-MM-dd HH:mm:ss.SSS ||yyyy-MM-dd || epoch_millis || strict_date_optional_time || yyyy-MM-dd'T'HH:mm:ss'+'08:00"
}
}
}
}
创建doc
#指定id
PUT /<index>/_doc/<_id>
PUT /report_index_1/_doc/1
{
"cover_url":"test2",
"activation":100
}
#不指定id
POST /<index>/_doc
POST /report_index_1/_doc/
{
"cover_url":"test2",
"activation":200
}
#创建时如果已经存在doc, 报异常
PUT /report_index_1/_doc/10/_create
{
"cover_url": "test10",
"activation": 1000
}
批量创建和操作
POST _bulk
{"index":{"_index":"report_index_1","_id":"1"}}
{"cover_url":"test1","