ES 数据操作
RESTful 风格
-
REST(Representational State Transfer,表述性状态转移)是一组架构约束条件和原则,而满足这些约束条件和原则的应用程序或设计就是 RESTful,其本质就是一种定义接口的规范。
-
基于 HTTP 。
-
使用 XML 或 JSON 的格式定义。
-
每一个 URI 代表一种资源。
-
客户端使用 GET、POST、PUT、DELETE 这 4 种表示操作方式的动词对服务端资源进行操作:
- GET:获取资源
- POST:新建资源(也可以更新资源)
- PUT:更新资源
- DELETE:删除资源
ES 数据类型
简单数据类型:
-
字符串
- text:会分词,不支持聚合(相当于 mysql 中的 sum)
- keyword:不会分词,将全部内容作为一个词条,支持聚合
-
数值
-
布尔值(boolean)
-
二进制(binary)
-
范围(range)
- integer_range
- float_range
- long_range
- double_range
- date_range
-
日期(date)
复杂数据类型:
-
数组 [ ]
:数组类型的 JSON 对象(for arrays of JSON objects) -
对象 { }
:单个 JSON 对象(for single JSON objects)
操作索引
使用 Kibana:
# 添加索引
PUT 索引名称
# 查询索引
# 查询单个索引信息
GET 索引名称
# 查询多个索引信息
GET 索引名称1,索引名称2,...
# 查询所有索引信息
GET _all # 注意:下划线开头的指令是ES内置的
# 删除索引
DELETE 索引名称
# 关闭索引
POST 索引名称/_close
# 打开索引
POST 索引名称/_open
使用 RESTful 接口:
# 添加索引
PUT http://ip:端口/索引名称
# 查询索引
# 查询单个索引信息
GET http://ip:端口/索引名称
# 查询多个索引信息
GET http://ip:端口/索引名称1,索引名称2,...
# 查询所有索引信息
GET http://ip:端口/_all
# 删除索引
DELETE http://ip:端口/索引名称
# 关闭索引
POST http://ip:端口/索引名称/_close
# 打开索引
POST http://ip:端口/索引名称/_open
操作映射
对已有索引添加映射:
# 添加索引
PUT person
# 添加映射
PUT /person/_mapping
{
"properties":{ # properties 为固定开头
"name":{ # 字段名称
"type":"text" # type表示字段类型
},
"age":{
"type":"integer"
}
}
}
同时创建索引和映射:
# 创建索引和映射
PUT /person1
{
"mappings": { # 注意 mappings 开头
"properties": {
"name": {
"type": "text"
},
"age": {
"type": "integer"
}
}
}
}
# 查询映射
GET person1/_mapping
添加字段:
# 与添加映射的方式相同
PUT /person1/_mapping
{
"properties": {
"address": {
"type": "text"
}
}
}
操作文档
添加文档(指定 id):
# 添加文档:指定 id 为 2
POST /person1/_doc/2
{
"name":"张三",
"age":18,
"address":"北京"
}
# 查询文档
GET /person1/_doc/2
添加文档(不指定 id):
# 添加文档:不指定id
POST /person1/_doc/
{
"name":"张三",
"age":18,
"address":"北京"
}
# 使用返回的随机数id来查询文档
GET /person1/_doc/随机数id
查询所有文档:
GET /person1/_search
删除指定 id 的文档:
DELETE /person1/_doc/2