ElasticSearch-put-索引
2025-01-22 08:19:30 966 字
This post is also available in English and alternative languages.
ElasticSearch版本:6.5.0(点击跳转官方文档)
“索引一份文档” 表示把一个文档存储到索引(名词)里,以便它可以被检索或查询。这很像SQL中的insert关键字,差别是,如果文档已经存在,新的文档回覆盖旧的文档。
使用put,向es中索引(创建)一个文档。
文档通过 _index 、 _type 、_id唯一确定,我们可以自己提供一个_id,也可以让es为我们生成
1. PUT
选择的索引叫做"demo",类型叫做"testData",自己选择的id是"123"
1 | put /demo/testDate/1 |
响应报文
1 | { |
响应报文指出请求的索引已经被成功创建,这个索引中包含了元数据以及一个新元素:_version。es中每个文档都有版本号,每当文档变化(包括删除)都会使_version增加。
2. POST
让es自动为我们生成_id。请求结构发生了变化,不再使用 PUT 方法,而是 POST 方法
1 | post /demo/testDate/ |
响应报文
1 | { |
响应报文和上面的没有什么区别,只是_id变成了自动生成的值。
3. 创建一个新文档
当使用put方式创建文档时(自己ID),如何判断是创建了一个文档,还是不小心覆盖了老文档(不小心id重复)?最简单的方式是使用es自动生成唯一的id。
3.1. op_type 方式
使用自定义ID,配合 op_type 作为查询参数
op_type=create:在提交时指定create,表示若id不存在时创建,否则创建失败
先插入一条测试数据
1 | PUT /testdata/data/11 |
再使用 op_type 参数,插入同样id的数据
1 | PUT /testdata/data/11?op_type=create |
返回报文,报错提示,版本冲突、文档id已存在
1 | { |
插入新的数据
1 | PUT /testdata/data/12?op_type=create |
返回报文
1 | { |
3.2. _create端点
op_type=create方式,还有一种表达方式,_create端点
插入一条上面的id一样的文档
1 | PUT /testdata/data/12/_create |
返回报文
1 | { |
4. Reference
- 《ElasticSearch权威指南》