上篇使用idea创建了一个简单的 maven工程,连接elasticsearch,并使用get方法获取了一个 document:
elasticsearch6实战教程学习笔记(八) — idea + Java实战 1 — get查询
本篇介绍elasticsearch的增、删、改。
1 增加一个文档
增加一个id为7,name为Huge,age为28的文档(因为之前没有设置mauanx的dynamic,所以可以不按字段添加文档)。代码如下:
// 添加文档
@Test
public void esInsert() throws IOException {
// 指定es集群;查看 elasticsearch.yml -- put("cluster.name",集群名称)
Settings settings = Settings.builder().put("cluster.name","elastricsearch").build();
// 创建访问es服务器的客户端
TransportClient client = new PreBuiltTransportClient(settings)
.addTransportAddresses(new TransportAddress(InetAddress.getByName("192.168.180.235"),9300));
// 设置参数
XContentBuilder doc = XContentFactory.jsonBuilder()
.startObject()
.field("id","7")
.field("name","Huge")
.field("age",28)
.endObject();
// 添加文档:指定索引和type、id + 设置参数
IndexResponse response = client.prepareIndex("mauanx","user","7")
.setSource(doc).get();
// 输出操作状态
System.out.println(response.status());
client.close();
}
最后输出响应的状态,操作成功会显示“CREATED”,如下图所示。
2 批量添加文档(bulk)
批量增加,文档与文档间用于逗号分隔。
@Test
public void esBulk() throws IOException {
// 指定es集群;查看 elasticsearch.yml -- put("cluster.name",集群名称)
Settings settings = Settings.builder().put("cluster.name","elastricsearch").build();
// 创建访问es服务器的客户端
TransportClient client = new PreBuiltTransportClient(settings)
.addTransportAddresses(new TransportAddress(InetAddress.getByName("192.168.180.235"),9300));
// 批量添加
BulkRequestBuilder builder = client.prepareBulk();
builder.add(client.prepareIndex("mauanx","user","8").setSource(
XContentFactory.jsonBuilder()
.startObject()
.field("id","8")
.field("name","Huge")
.field("age",26)
.endObject()
)
);
BulkResponse br = builder.get();
// 输出操作状态
// 1. 输出status
System.out.println(br.status());
// 2. 使用hasFailures判断时候失败,失败时为true
if (br.hasFailures()){
System.out.println("失败...");
}
// 查询插入状态
client.close();
}
若成功,则status返回“OK”。
3 更新文档
使用update修改muaunx的user中id为7的文档,name修改为Gina,age修改为18。代码如下:
@Test
public void esUpdate() throws IOException, ExecutionException, InterruptedException {
// 指定es集群;查看 elasticsearch.yml -- put("cluster.name",集群名称)
Settings settings = Settings.builder().put("cluster.name","elastricsearch").build();
// 创建访问es服务器的客户端
TransportClient client = new PreBuiltTransportClient(settings)
.addTransportAddresses(new TransportAddress(InetAddress.getByName("192.168.180.235"),9300));
// 修改文档:指定索引和type + id,修改内容
UpdateRequest request = new UpdateRequest();
request.index("mauanx")
.type("user")
.id("7")
.doc(
XContentFactory.jsonBuilder().startObject()
.field("name","Gina")
.field("age",18)
.endObject()
);
UpdateResponse response = client.update(request).get();
// 输出操作状态
System.out.println(response.status());
client.close();
}
成功返回为“OK”。
4 删除文档
删除id为7的文档。
@Test
public void esDelete() throws IOException {
// 指定es集群;查看 elasticsearch.yml -- put("cluster.name",集群名称)
Settings settings = Settings.builder().put("cluster.name","elastricsearch").build();
// 创建访问es服务器的客户端
TransportClient client = new PreBuiltTransportClient(settings)
.addTransportAddresses(new TransportAddress(InetAddress.getByName("192.168.180.235"),9300));
// 删除文档:指定 id
DeleteResponse response = client.prepareDelete("mauanx","user","7").get();
// 输出操作状态
System.out.println(response.status());
client.close();
}
结果忘记存图了,盲猜成功返回为“OK”或者“DELETED”。
下篇:elasticsearch6实战教程学习笔记(十) — idea + Java实战 3 — 简单查询