新建文档
1 | PUT my_demo/_doc/1 |
测试:
创建一个索引:
1 | PUT my_demo |
建立文档:
1 | PUT /my_demo/_doc/1 |
返回值说明
1 | { |
获取单个文档
HEAD my_demo/_doc/1
GET my_demo/_doc/1
不获取文档的source: GET my_demo/_doc/1?_source=false
获取文档的source:GET twitter/_doc/1/_source
获取多个文档 _mget
多种方式
1 | GET /_mget |
删除文档
指定文档id进行删除 DELETE my_demo/_doc/1
用版本来控制删除 DELETE my_demo/_doc/1?version=1
查询删除
1 | POST my_demo/_delete_by_query |
当有文档有版本冲突时,不放弃删除操作(记录冲突的文档,继续删除其他复合查询的文档)
1 | POST my_demo/_doc/_delete_by_query?conflicts=proceed |
更新文档
指定文档id进行修改
1 | PUT my_demo/_doc/1 |
乐观锁并发更新控制
1 | PUT my_demo/_doc/1?version=1 |
通过脚本来更新文档
对文档的counter + 1
1 | POST my_demo/_doc/1/_update |
往数组中加入元素
1 | POST my_demo/_doc/1/_update |
painless是es内置的一种脚本语言,ctx执行上下文对象(通过它还可访问_index, _type, _id, _version, _routing and _now (the current timestamp) ),params是参数集合
脚本更新要求索引的_source 字段是启用的。更新执行流程:
1 | a、获取到原文档 |
其他操作
1 | 添加一个字段 |
通过条件查询来更新文档
1 | POST my_demo/_update_by_query |
批量操作
批量操作API /_bulk 可以在一次调用中执行多个索引、删除操作。这可以大大提高索引数据的速度。批量操作内容体需按如下以新行分割的json结构格式给出:
语法:
1 | action_and_meta_data\n |
说明:
action_and_meta_data: action可以是 index, create, delete and update ,meta_data 指: _index ,_type,_id 请求端点可以是: /_bulk, /{index}/_bulk, {index}/{type}/_bulk
示例:
1 | POST _bulk |
curl + json 文件 批量索引多个文档
类似于导入文件数据
1 | curl -H "Content-Type: application/json" -XPOST "localhost:9200/my_demo/_doc/_bulk?pretty&refresh" --data-binary "@my_demo.json" |
数据格式:
1 | {"index":{"_id":"1"}} |
reindex 重索引
Reindex API /_reindex 让我们可以将一个索引中的数据重索引到另一个索引中(拷贝),要求源索引的_source 是开启的。目标索引的setting 、mapping 信息与源索引无关。
1 | POST _reindex |
数据有重复的处理:
1、如果没有指定version_type 或指定为 internal,则会是采用目标索引中的版本,重索引过程中,执行的就是新增、更新操作。
1 | POST _reindex |
2、如果想使用源索引中的版本来进行版本控制更新,则设置 version_type 为extenal。重索引操作将写入不存在的,更新旧版本的数据。
1 | POST _reindex |
3、如果只想从源索引中复制目标索引中不存在的文档数据,可以指定 op_type 为 create 。此时存在的文档将触发 版本冲突(会导致放弃操作),可设置“conflicts”: “proceed“,跳过继续。
1 | POST _reindex |
4、可以只索引源索引的一部分数据,通过 type 或 查询来指定你需要的数据
1 | POST _reindex |
可以从多个源获取数据
1 | POST _reindex |
可以限定文档数量
1 | POST _reindex |
可以选择复制源文档的哪些字段
1 | POST _reindex |
可以用script来改变文档
1 | POST _reindex |
可以指定路由值把文档放到哪个分片上
1 | POST _reindex |
从远程源复制
1 | POST _reindex |
通过_task 来查询执行状态
GET _tasks?detailed=true&actions=*reindex
refresh
对于索引、更新、删除操作如果想操作完后立马重刷新可见,可带上refresh参数
PUT /demo/_doc/1?refresh
refresh 可选值说明
1 | 未给值或=true,则立马会重刷新读索引。 |