本文来说下Elasticsearch基本操作之文档操作

文章目录

文档概述创建文档示例创建文档(生成随机id)创建文档(自定义唯一性标识)

查看文档示例根据主键查看文档查看所有文档

修改文档示例全局修改文档局部修改文档

删除文档示例根据文档的唯一性标识删除文档条件删除文档

本文小结

文档概述

文档概述

在创建好索引的基础上来创建文档,并添加数据。这里的文档可以类比为关系型数据库中的表数据,添加的数据格式为 JSON 格式。

创建文档示例

创建文档(生成随机id)

在 apifox 中,向 ES 服务器发 POST 请求 :http://localhost:9200/person/_doc,请求体内容为:

服务器响应结果如下:

此处发送请求的方式必须为 POST,不能是 PUT ,否则会发生错误

服务器响应结果解释

{

"_index"【索引】: "person",

"_type"【 类型-文档 】: "_doc",

"_id"【唯一标识】: "Qc8r54wBBLem2BEmnNus",

#可以类比为 MySQL 中的主键,随机生成

"_version"【版本】: 1,

"result"【结果】: "created",#这里的 create 表示创建成功

"_shards"【分片】: {

"total"【分片 - 总数】: 2,

"successful"【分片 - 成功】: 1,

"failed"【分片 - 失败】: 0

},

"_seq_no": 1,

"_primary_term": 1

}

注意:上面的数据创建后,由于没有指定数据唯一性标识(ID),默认情况下,ES 服务器会随机生成一个。

创建文档(自定义唯一性标识)

在 apifox 中,向 ES 服务器发 POST 请求 :http://localhost:9200/person/_doc/1,请求体内容为:

{

"name":"李四",

"age":22,

"sex":"女"

}

服务器响应结果如下:

查看文档示例

根据主键查看文档

查看文档时,需要指明文档的唯一性标识,类似于 MySQL 中数据的主键查询。在 apifox 中,向 ES 服务器发 GET 请求 :http://127.0.0.1:9200/person/_doc/ 1

查询成功后,服务器响应结果

服务器响应结果解释

{

"_index"【索引】: "person",

"_type"【文档类型】: "_doc",

"_id"【唯一标识】: "1", #可以类比为 MySQL 中的主键

"_version"【版本】: 1,

"_seq_no": 4,

"_primary_term": 1,

"found"【查询结果】: true, # true 表示查找到,false 表示未查找到

"_source"【文档源信息】: {

"name": "李四",

"age": 22,

"sex": "女"

}

}

查看所有文档

在 apifox 中,向 ES 服务器发 GET 请求 :http://localhost:9200/person/ _search

查询成功后,服务器响应结果

{

"took": 0,

"timed_out": false,

"_shards": {

"total": 1,

"successful": 1,

"skipped": 0,

"failed": 0

},

"hits": {

"total": {

"value": 5,

"relation": "eq"

},

"max_score": 1.0,

"hits": [

{

"_index": "person",

"_type": "_doc",

"_id": "QM_K5owBBLem2BEmAdux",

"_score": 1.0,

"_source": {

"name": "张三",

"age": 20,

"sex": "男"

}

},

{

"_index": "person",

"_type": "_doc",

"_id": "Qc8r54wBBLem2BEmnNus",

"_score": 1.0,

"_source": {

"name": "张三",

"age": 20,

"sex": "男"

}

},

{

"_index": "person",

"_type": "_doc",

"_id": "Qs9754wBBLem2BEm69tA",

"_score": 1.0,

"_source": {

"name": "张三",

"age": 20,

"sex": "男"

}

},

{

"_index": "person",

"_type": "_doc",

"_id": "Q89854wBBLem2BEmXds5",

"_score": 1.0,

"_source": {

"name": "李四",

"age": 22,

"sex": "女"

}

},

{

"_index": "person",

"_type": "_doc",

"_id": "1",

"_score": 1.0,

"_source": {

"name": "李四",

"age": 22,

"sex": "女"

}

}

]

}

}

修改文档示例

全局修改文档

和新增文档一样,输入相同的 URL 地址请求,如果请求体变化,会将原有的数据内容覆盖。在 apifox 中,向 ES 服务器发 POST 请求 :http://127.0.0.1:9200/person/_doc/1,请求体内容为:

{

"name":"李四四",

"age":66,

"sex":"女"

}

修改成功后,服务器响应结果

服务器响应结果解释

{

"_index": "person",

"_type": "_doc",

"_id": "1",

"_version"【版本】: 2,

"result"【结果】: "updated",# updated 表示数据被更新

"_shards": {

"total": 2,

"successful": 1,

"failed": 0

},

"_seq_no": 5,

"_primary_term": 1

}

局部修改文档

修改数据时,也可以只修改某一给条数据的局部信息。在 apifox 中,向 ES 服务器发 POST 请求 :http://127.0.0.1:9200/person/_update/1,请求体内容为:

修改成功后,服务器响应结果

根据唯一性标识,查询文档数据,文档数据已经更新

删除文档示例

根据文档的唯一性标识删除文档

删除一个文档不会立即从磁盘上移除,它只是被标记成已删除(逻辑删除)。

在 apifox 中,向 ES 服务器发 DELETE 请求 :http://127.0.0.1:9200/person/ _doc/1

删除成功,服务器响应结果

服务器响应结果解释

{

"_index": "person",

"_type": "_doc",

"_id": "1",

"_version"【版本】: 4, #对数据的操作,都会更新版本

"result"【结果】: "deleted", # deleted 表示数据被标记为删除

"_shards": {

"total": 2,

"successful": 1,

"failed": 0

},

"_seq_no": 7,

"_primary_term": 1

}

删除后再查询当前文档信息

如果删除一个并不存在的文档,返回结果为 not_found

条件删除文档

一般删除数据都是根据文档的唯一性标识进行删除,实际操作时,也可以根据条件对多条数据进行删除。

首先分别增加多条数据

向 ES 服务器发 POST 请求 :http://127.0.0.1:9200/person/ _delete_by_query ,请求体内容为:

{

"query":{

"match":{

"name":"张三"

}

}

}

服务器响应结果解释

{

"took"【耗时】: 1426,

"timed_out" 【是否超时】: false,

"total" 【总数】: 4,

"deleted"【删除数量】: 4,

"batches": 1,

"version_conflicts": 0,

"noops": 0,

"retries": {

"bulk": 0,

"search": 0

},

"throttled_millis": 0,

"requests_per_second": -1.0,

"throttled_until_millis": 0,

"failures": []

}

本文小结

本文记录了Elasticsearch基本操作之文档操作

好文阅读

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。