Elasticsearch 05 基础操作
1、ES的RESTful API
ES以RESTful风格定义自己的API:
http://[ip]:[端口]/[索引]/[类型]/[文档id]
2、创建索引
⑴ 通过elasticsearch-head插件来创建【非结构化的创建】
单击索引 -> 新建索引 -> 起个索引名 -> 单击OK
创建完索引后,可以到概览中去查看
Tips:单击信息 -> 索引信息
当中有一个mappings的子集,如果它是空的,代表它是非结构化的索引
⑵ 结构化的创建
单击复合查询 -> 输入索引/类型/mappings -> 输入文档对应的JSON字符串 -> 易读打勾 -> 验证JSON -> 提交请求
示例:
输入:animals/tiger/mappings
JSON字符串:
{
"king": {
"properties": {
"name": {
"type": "text"
}
}
}
}
再回到概览中去查看创建的索引,及其结构化
Tips:通过ES的API查看索引,格式:
http://ES的服务地址:端口号/_mapping?pretty
3、使用Postman
⑴ 介绍
Postman是Chrome的一个插件,它可以用于模拟HTTP的各种类型的请求。体积小,速度快,还有格式提示
⑵ 使用方式
① 选择请求方式【PUT(提交)/POST(更新)】
② 输入请求URL/索引名
③ 单击body,选择raw
④ 选择传输类型为JSON(application/JSON)
⑤ 输入JSON字符串
⑶ 新建索引
{
"settings": { // 索引设置
"number_of_shards": 3, // 分片数
"number_of_replicas": 1 // 备份数
},
"mappings": { // 映射【type类型】
"man": { // 一个类型
"properties": {
"name": {
"type": "text" // 文本型
},
"age": {
"type": "integer" // 数值型
},
"country": {
"type": "keyword" // 关键字
},
"birthday": {
"type": "date", // 日期型
"format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis" // 日期的格式,包括时间戳
}
}
}
}
}
注意:6.0之后不再支持一个mappings中有多个type,否则报400错误
4、添加数据
⑴ 添加的类型
① 指定文档id插入
② 自动产生文档id插入
文档id是一个唯一的索引值,指向文档数据
⑵ 指定文档id插入
使用PUT请求
URL格式类型为:
http://ES服务地址/索引/类型/指定id
添加文档的JSON示例:
{
"name": "ada",
"age": 14,
"birthday": "1970-01-01"
}
⑶ 自动生成文档id插入
使用POST请求
URL格式类型为:
http://ES服务地址/索引/类型
添加文档的JSON格式仍和上面指定id的格式一样
5、修改数据
⑴ 修改的类型
① 直接修改文档
② 脚本修改文档
⑵ 直接修改文档
使用POST请求
URL格式类型为:
http://ES服务地址/索引/类型/要修改的文档的id/_update
修改文档的JSON格式:
{
"doc": {
"要修改的字段": "要替换的值",
"要修改的字段": "要替换的值"
}
}
⑶ 脚本修改文档
ES支持的脚本语言除了其自带的painless,还支持JavaScript和Python等
使用POST请求
URL格式类型为:
http://ES服务地址/索引/类型/要修改的文档的id/_update
修改文档的JSON格式:
{
"script": {
"lang": "painless",
"inline": "ctx._source.要修改的字段=修改后的值"
}
}
ctx指ES的上下文
_source指当前的文档
或者把要修改的值提出来
{
"script": {
"lang": "painless",
"inline": "ctx._source.要修改的字段名 = params.要修改的字段名",
"params": {
"要修改的字段名": "修改后的值"
}
}
}
示例:
{
"script": {
"lang": "painless",
"inline": "ctx._source.name = 'aaa'"
}
}
{
"script": {
"lang": "painless",
"inline": "ctx._source.age += 14"
}
}
或
{
"script": {
"lang": "painless",
"inline": "ctx._source.age = params.age",
"params": {
"age": 14
}
}
}
6、删除数据
⑴ 删除文档
使用DELETE请求
URL格式类型为:
http://ES服务地址/索引/类型/要删除的文档的id
⑵ 删除索引
使用DELETE请求
URL格式类型为:
http://ES服务地址/要删除的索引名
或使用elasticsearch-head插件来删除索引:
单击概览 -> 选择要删除的索引的动作 -> 删除… -> 在弹出的对话框中输入“删除” -> 单击确定即可