//单个索引查询
@Test
public void queryIndex(){
//查询
GetResponse response = client.prepareGet("blog", "article", "2").get();
// 打印
System.out.println(response.getSource());
client.close();
}
结果:
org.elasticsearch.transport.client.PreBuiltTransportClient@783ec989
{name=zyd, id=2, title=大数据}
需要注释掉之前获取客户端对象的client.close()方法
//多个条件的查询
@Test
public void queryMutilIndex(){
//查询
MultiGetResponse response = client.prepareMultiGet()
.add("blog", "article", "3")
.add("blog", "article", "2", "3")
.add("blog", "article", "1").get();
for (MultiGetItemResponse multiGetItemResponse : response) {
GetResponse response1 = multiGetItemResponse.getResponse();
if (response1.isExists()){
System.out.println(response1.getSourceAsString());
}
}
client.close();
}
更新文档(update)
@Test
public void updateData() throws Throwable {
//1 创建更新数据的请求对象
UpdateRequest updateRequest = new UpdateRequest();
updateRequest.index("blog");
updateRequest.type("article");
updateRequest.id("3");
//UpdateRequest updateRequest = new UpdateRequest("blog", "acticle", "3"); //会报错
updateRequest.doc(XContentFactory.jsonBuilder().startObject()
// 对没有的字段添加, 对已有的字段替换
.field("title", "基于Lucene的搜索服务器")
.field("content",
"它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。大数据前景无限")
.field("createDate", "2017-8-22").endObject());
// 2 获取更新后的值
UpdateResponse indexResponse = client.update(updateRequest).get();
// 3 打印返回的结果
System.out.println("index:" + indexResponse.getIndex());
System.out.println("type:" + indexResponse.getType());
System.out.println("id:" + indexResponse.getId());
System.out.println("version:" + indexResponse.getVersion());
System.out.println("create:" + indexResponse.getResult());
// 4 关闭连接
client.close();
}
更新文档(upsert)
设置查询条件, 查找不到则添加IndexRequest内容,查找到则按照UpdateRequest更新
@Test
public void testUpsert() throws ExecutionException, InterruptedException, IOException {
// 设置查询条件, 查找不到则添加
IndexRequest indexRequest = new IndexRequest("blog", "article", "5")
.source(XContentFactory.jsonBuilder().startObject().field("title", "搜索服务器").field("content","它提供了一个分布式多用户能力的全文搜索引擎," +
"基于RESTful web接口。Elasticsearch是用Java开发的" +
",并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。" +
"设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。").endObject());
//设置更新,查找到更新下面的设置
UpdateRequest upsert = new UpdateRequest("blog", "article", "5").doc(XContentFactory.jsonBuilder().startObject().field("user", "zyd").endObject()).upsert(indexRequest);
client.update(upsert).get();
client.close();
}
第一次执行
hadoop102:9200/blog/article/5
第二次执行
hadoop102:9200/blog/article/5
删除文档数据**(prepareDelete** )
@Test
public void deleteDate(){
//1 删除文档数据
DeleteResponse indexResponse = client.prepareDelete("blog", "article", "5").get();
// 2 打印返回的结果
System.out.println("index:" + indexResponse.getIndex());
System.out.println("type:" + indexResponse.getType());
System.out.println("id:" + indexResponse.getId());
System.out.println("version:" + indexResponse.getVersion());
System.out.println("found:" + indexResponse.getResult());
// 3 关闭连接
client.close();
}
结果
index:blog
type:article
id:5
version:3
found:DELETED