JavaRestClient操作Elasticsearch批量新增文档
2023-02-18 16:35:52 时间
导包
导包可以根据 文档 里导入依赖 这里就不写依赖了
批量新增文档
import com.google.gson.Gson;
import com.leyou.pojo.Item;
import org.apache.http.HttpHost;
import org.elasticsearch.action.bulk.BulkRequest;
import org.elasticsearch.action.bulk.BulkResponse;
import org.elasticsearch.action.delete.DeleteRequest;
import org.elasticsearch.action.delete.DeleteResponse;
import org.elasticsearch.action.get.GetRequest;
import org.elasticsearch.action.get.GetResponse;
import org.elasticsearch.action.index.IndexRequest;
import org.elasticsearch.action.index.IndexResponse;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.common.xcontent.XContentType;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
@RunWith(SpringRunner.class)
@SpringBootTest
public class Esdemo2 {
private RestHighLevelClient client;
private Gson gson = new Gson();
/**
* 先执行
*/
@Before
public void init (){
// 初始化HighLevel客户端
client = new RestHighLevelClient(
RestClient.builder(
HttpHost.create("http://127.0.0.1:9201"),
HttpHost.create("http://127.0.0.1:9202"),
HttpHost.create("http://127.0.0.1:9203")
)
);
}
/**
* 批量新增
*/
@Test
public void testBulkIndex() throws IOException {
//准备新增的文档
List<Item> list = new ArrayList<>();
list.add(new Item(1L, "小米手机7", "手机", "小米", 3299.00, "http://image.csdn.com/13123.jpg"));
list.add(new Item(2L, "坚果手机R1", "手机", "锤子", 3699.00, "http://image.csdn.com/13123.jpg"));
list.add(new Item(3L, "华为META10", "手机", "华为", 4499.00, "http://image.csdn.com/13123.jpg"));
list.add(new Item(4L, "小米Mix2S", "手机", "小米", 4299.00, "http://image.csdn.com/13123.jpg"));
list.add(new Item(5L, "荣耀V10", "手机", "华为", 2799.00, "http://image.csdn.com/13123.jpg"));
// 创建批量新增请求
BulkRequest bulkRequest = new BulkRequest();
for (Item item : list) {
// 构建单个IndexRequest,并add到BulkRequest中去
bulkRequest.add(new IndexRequest("索引名","类型名",item.getId().toString()).source(gson.toJson(item),XContentType.JSON));
}
// 发起请求
BulkResponse bulk = client.bulk(bulkRequest,RequestOptions.DEFAULT);
//打印
System.out.println("结果::"+bulk);
}
/**
* 后执行
*/
@After
public void close(){
try {
client.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
结果图:
相关文章
- Yolo v7夜间(微光)车流量计数!代码开源!论文速递2022.10.10!
- [javaEE] response实现图片下载
- [javaSE] GUI(鼠标事件)
- 论文速递2022.10.11!
- ECCV2022 | 光流的半监督学习,精度更高!代码开源!论文速递2022.10.12!
- [javaSE] 网络编程(TCP-并发上传图片)
- 论文/代码速递2022.10.13!
- [javaSE] IO流(装饰设计模式)
- 多个任务超越moco v3!OPERA:监督学习和自监督统一的框架!
- [javaSE] 集合框架(Map概述)
- ECCV2022 | 超越 SPADE,SCAM语义生成图像能应对更具挑战性的任务! 论文/代码速递2022.10.14!
- [javaSE] 多线程(join方法)
- 论文/代码速递2022.10.17!
- [javaSE] 多线程(守护线程)
- ECCV 2022|华为诺亚提出CLIFF:将全帧位置信息带入人体姿势和形状估!论文/代码速递2022.10.18!
- [javaSE] 多线程(售票例子)
- “看”车,有TA就够了!车辆分析工具PP-Vehicle开源上新!
- [javaSE] 进制转换(二进制十进制十六进制八进制)
- [javaSE] IO流(RandomAccessFile)
- [javaSE] IO流(管道流)