文档操作

一、添加文档信息

1
2
3
4
5
6
7
8
9
10
//实际命令 PUT /saxon/_doc/1
// {...}
User saxon = new User ("saxon", 1);
IndexRequest indexRequest=new IndexRequest ("saxon");
indexRequest.id ("1");//设置文档的编号
indexRequest.timeout ("1s");
String s = JSON.toJSONString (saxon);
indexRequest.source (s,XContentType.JSON);
IndexResponse index = restHighLevelClient.index (indexRequest, RequestOptions.DEFAULT);
System.out.println (index.getVersion ());

指定timeout,就能在timeout时间范围内,将搜索到的部分数据(也可能全部都搜索到),直接返回给client,而不是所有数据搜索到再返回,可以为一些敏感的搜索应用提供良好的支持

提供的信息必须要是json字符串,否则就会添加失败,还是那句话,所有的命令由client执行

二、修改文档的数据

1
2
3
4
UpdateRequest up = new UpdateRequest ("saxon","1");
up.doc (JSON.toJSONString (new User ("saxonmo",202)),XContentType.JSON);
UpdateResponse update = restHighLevelClient.update (up, RequestOptions.DEFAULT);
System.out.println (update.status ());

实际上每一个xxxxResponse对应的都是一个命令的返回体

1
2
3
4
5
6
7
8
9
10
11
12
13
14
{
"_index" : "saxon",
"_type" : "_doc",
"_id" : "1",
"_version" : 6,
"result" : "updated",
"_shards" : {
"total" : 2,
"successful" : 1,
"failed" : 0
},
"_seq_no" : 5,
"_primary_term" : 1
}

三、删除文档数据

1
2
3
4
DeleteRequest deleteRequest=new DeleteRequest ("saxon","1");
deleteRequest.timeout ("1s");
DeleteResponse deleteResponse=restHighLevelClient.delete (deleteRequest,RequestOptions.DEFAULT);
System.out.println (deleteResponse.status ());

四、查出文档信息

1
2
3
4
5
6
7
8
SearchRequest searchRequest=new SearchRequest ("saxon");
SearchSourceBuilder Builder = new SearchSourceBuilder ();
Builder.query (QueryBuilders.matchQuery ("name","saxon"));
searchRequest.source (Builder);
SearchResponse search = restHighLevelClient.search (searchRequest, RequestOptions.DEFAULT);
for (SearchHit hit : search.getHits ()) {
System.out.println (hit);
}