本片内容 简介
批量操作
导入数据
各种查询
索引别名、重建索引
所有内容 我们都先介绍 脚本操作、在介绍Java API操作
批量操作
bulk 批量操作 :将文档 增删改查 一系列的操作,通过一次请求全部做完。优点:可以减少网络传输次数。
语法 与 案例
我们去实际操作一下吧。操作前 确保 索引库有 5 个文档
先查一下 有没有 5 个文档
GET persion2/_search
查询后 我们就开始 写我们的脚本了
POST _bulk
{"delete":{"_index":"persion2","_id":"5"}}
{"create":{"_index":"persion2","_id":"8"}}
{"name":"BULK插入","age":"88"}
{"update":{"_index":"persion2","_id":"2"}}
{"doc":{"name":"二号名字被修改了"}}
上面的含义是 :
- 删除 索引库 persion2中 id 为 5 的文档
- 在索引库persion2中 创建一个 id 为8 的文档 数据又 name="BULB插入",age="88"
- 更新索引库persion2 中 id 为2 的文档,修改其中name 为 "二号名字被修改"
注意 上面的 update 就是更新 ,没有此 id 就会提示 document_missing_exception 说明 没有找到此文档
我们执行一下看看结果 代码有些长 有必要看一看
{
"took" : 12, // 这里执行需要的毫秒数
"errors" : false, // 是否出现错误
"items" : [
{
"delete" : {
"_index" : "persion2",
"_type" : "_doc",
"_id" : "5",
"_version" : 1,
"result" : "not_found",
"_shards" : {
"total" : 2,
"successful" : 1,
"failed" : 0
},
"_seq_no" : 89,
"_primary_term" : 4,
"status" : 404
}
},
{
"create" : {
"_index" : "persion2",
"_type" : "_doc",
"_id" : "8",
"_version" : 2,
"result" : "created",
"_shards" : {
"total" : 2,
"successful" : 1,
"failed" : 0
},
"_seq_no" : 90,
"_primary_term" : 4,
"status" : 201
}
},
{
"update" : {
"_index" : "persion2",
"_type" : "_doc",
"_id" : "2",
"_version" : 2,
"result" : "updated",
"_shards" : {
"total" : 2,
"successful" : 1,
"failed" : 0
},
"_seq_no" : 91,
"_primary_term" : 4,
"status" : 200
}
}
]
}
上面显示 errors 为 false 就是 执行成功了
最终的Java 代码实现
/**
* 批量操作 bulk
* @throws IOException
*/
@Test
void bulk() throws IOException {
// 创建 BulkRequest 对象,用于 整合所有的操作
BulkRequest bulkRequest = new BulkRequest();
// 添加 删除文档 相关操作
DeleteRequest deleteRequest = new DeleteRequest("persion2","5");
bulkRequest.add(deleteRequest);
// 添加 添加文档
Map map = new HashMap();
map.put("name","BULK插入");
map.put("age","88");
IndexRequest indexRequest = new IndexRequest("persion2").id("8").source(map);
// 更新文档
UpdateRequest updateRequest = new UpdateRequest();
Map map1 = new HashMap();
map1.put("name","二号名字被修改了");
updateRequest.index("persion2").id("2").doc(map1);
bulkRequest.add(updateRequest);
// 执行 批量操作
BulkResponse bulk = client.bulk(bulkRequest, RequestOptions.DEFAULT);
RestStatus status = bulk.status();
System.out.println(status);
}
导入数据 Very Important
模拟一个需求:
将数据库中 Goods表 的数据 导入 ElasticSearch 中
实现步骤:
- 创建goods索引
- 查询Goods表数据
- 批量添加到ElasticSearch中
特殊说明:
上述文章均是作者实际操作后产出。烦请各位,请勿直接盗用!转载记得标注原文链接:www.zanglikun.com
第三方平台不会及时更新本文最新内容。如果发现本文资料不全,可访问本人的Java博客搜索:标题关键字。以获取最新全部资料 ❤
第三方平台不会及时更新本文最新内容。如果发现本文资料不全,可访问本人的Java博客搜索:标题关键字。以获取最新全部资料 ❤
评论(0)