索引
创建索引
// 创建索引
@Test
public void esTest01() throws IOException {
// 创建客户端
RestHighLevelClient client = new RestHighLevelClient(
RestClient.builder(new HttpHost("127.0.0.1", 9200, "http"))
);
// 创建索引请求
CreateIndexRequest request = new CreateIndexRequest("user");
// 发送请求
CreateIndexResponse response = client.indices().create(request, RequestOptions.DEFAULT);
// 响应
System.out.println(response.isAcknowledged());
// 关闭客户端
client.close();
}
查询索引
public void searchIndexTest() throws IOException {
// 创建客户端
RestHighLevelClient client = new RestHighLevelClient(
RestClient.builder(new HttpHost("127.0.0.1", 9200, "http"))
);
// 查询索引请求
GetIndexRequest request = new GetIndexRequest("user");
// 发送请求
GetIndexResponse response = client.indices().get(request, RequestOptions.DEFAULT);
// 响应状态
System.out.println(response.getAliases());
System.out.println(response.getMappings());
System.out.println(response.getSettings());
// 关闭客户端
client.close();
}
删除索引
public void deleteIndexTest() throws IOException {
// 创建客户端
RestHighLevelClient client = new RestHighLevelClient(
RestClient.builder(new HttpHost("127.0.0.1", 9200, "http"))
);
// 创建索引请求
DeleteIndexRequest request = new DeleteIndexRequest("user");
// 发送请求
AcknowledgedResponse response = client.indices().delete(request, RequestOptions.DEFAULT);
// 响应
System.out.println(response.isAcknowledged());
// 关闭客户端
client.close();
}
文档
因为在一个Java文件里写的,就把创建客户端关闭客户端写在调用外了。
public static void main(String[] args) throws Exception {
// 创建客户端
RestHighLevelClient client = new RestHighLevelClient(
RestClient.builder(new HttpHost("127.0.0.1", 9200, "http"))
);
// 调用测试方法
xxxTest(client);
// 关闭客户端
client.close();
}
插入
单条插入
public void insertDocumentTest() throws IOException {
// 创建客户端
RestHighLevelClient client = new RestHighLevelClient(
RestClient.builder(new HttpHost("127.0.0.1", 9200, "http"))
);
// 创建索引请求
IndexRequest request = new IndexRequest();
request.index("user");
// 设置数据
UserTest user = new UserTest("张三", 18, "男");
// 对象转json
ObjectMapper mapper = new ObjectMapper();
String userJson = mapper.writeValueAsString(user);
request.source(userJson, XContentType.JSON);
// 发送请求
IndexResponse response = client.index(request, RequestOptions.DEFAULT);
// 响应
System.out.println(response.getResult());
// 关闭客户端
client.close();
}
批量插入
private static void batchInsertDocumentTest(RestHighLevelClient client) throws Exception {
// 创建请求
BulkRequest request = new BulkRequest();
// 设置数据
UserTest user1 = new UserTest("zhangsan", 18, "男");
UserTest user2 = new UserTest("zhangsan1", 20, "女");
UserTest user3 = new UserTest("zhangsan12", 21, "男");
// 对象转json
ObjectMapper mapper = new ObjectMapper();
String user1Json = mapper.writeValueAsString(user1);
String user2Json = mapper.writeValueAsString(user2);
String user3Json = mapper.writeValueAsString(user3);
// 添加请求
request.add(new IndexRequest("user").source(user1Json,XContentType.JSON));
request.add(new IndexRequest("user").source(user2Json,XContentType.JSON));
request.add(new IndexRequest("user").source(user3Json,XContentType.JSON));
// 发送请求
BulkResponse responses = client.bulk(request, RequestOptions.DEFAULT);
// 响应
System.out.println(responses.status());
}
修改
private static void updateDocumentTest() throws Exception {
// 创建客户端
RestHighLevelClient client = new RestHighLevelClient(
RestClient.builder(new HttpHost("127.0.0.1", 9200, "http"))
);
// 创建索引请求
UpdateRequest request = new UpdateRequest();
request.index("user").id("iBkvwo4BTeceah33aM8P");
// 设置数据
request.doc(XContentType.JSON, "name", "王五");
// 发送请求
UpdateResponse response = client.update(request, RequestOptions.DEFAULT);
// 响应
System.out.println(response.getGetResult());
// 关闭客户端
client.close();
}
查询
全量查询
private static void queryAllDocumentTest(RestHighLevelClient client) throws Exception {
// 创建请求
SearchRequest request = new SearchRequest("user");
request.source(new SearchSourceBuilder().query(QueryBuilders.matchAllQuery()));
// 发送请求
SearchResponse response = client.search(request, RequestOptions.DEFAULT);
// 响应
SearchHits hits = response.getHits();
SearchHit[] searchHits = hits.getHits();
for (SearchHit hit : searchHits) {
System.out.println(hit.getId());
System.out.println(hit.getSourceAsString());
}
}
条件查询
private static void queryDocumentTest(RestHighLevelClient client) throws Exception {
// 创建请求
SearchRequest request = new SearchRequest("user");
// 查询条件
// SearchSourceBuilder query = new SearchSourceBuilder()
// .query(QueryBuilders.matchQuery("name", "三"));
SearchSourceBuilder query = new SearchSourceBuilder();
// 分页
query.from(0);
query.size(1);
// 排序
query.sort("age", SortOrder.ASC);
// 过滤字段
query.fetchSource(new String[]{"name", "age"}, new String[]{"sex"});
// 设置查询条件
request.source(query);
// 发送请求
SearchResponse response = client.search(request, RequestOptions.DEFAULT);
// 响应
SearchHits hits = response.getHits();
SearchHit[] searchHits = hits.getHits();
for (SearchHit hit : searchHits) {
System.out.println(hit.getId());
System.out.println(hit.getSourceAsString());
}
}
复合查询
private static void boolQueryDocumentTest(RestHighLevelClient client) throws Exception {
// 创建请求
SearchRequest request = new SearchRequest("user");
SearchSourceBuilder query = new SearchSourceBuilder();
// 复合查询
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
// // 必须满足条件,类似sql中的and
// boolQueryBuilder.must(QueryBuilders.matchQuery("name", "李"));
// // 必须不满足条件,类似sql中的not
boolQueryBuilder.mustNot(QueryBuilders.matchQuery("six", "男"));
// // 至少满足条件,类似sql中的or
// boolQueryBuilder.should(QueryBuilders.matchQuery("age", 18));
// boolQueryBuilder.should(QueryBuilders.matchQuery("name", "李"));
query.query(boolQueryBuilder);
request.source(query);
// 发送请求
SearchResponse response = client.search(request, RequestOptions.DEFAULT);
// 响应
SearchHits hits = response.getHits();
SearchHit[] searchHits = hits.getHits();
for (SearchHit hit : searchHits) {
System.out.println(hit.getId());
System.out.println(hit.getSourceAsString());
}
}
范围查询
private static void rangeQueryDocumentTest(RestHighLevelClient client) throws Exception {
// 创建请求
SearchRequest request = new SearchRequest("user");
// 查询条件
SearchSourceBuilder query = new SearchSourceBuilder()
.query(QueryBuilders.rangeQuery("age").gte(18).lte(20));
request.source(query);
// 发送请求
SearchResponse response = client.search(request, RequestOptions.DEFAULT);
// 响应
SearchHits hits = response.getHits();
SearchHit[] searchHits = hits.getHits();
for (SearchHit hit : searchHits) {
System.out.println(hit.getId());
System.out.println(hit.getSourceAsString());
}
}
模糊查询
private static void fuzzyQueryDocumentTest(RestHighLevelClient client) throws Exception {
// 创建请求
SearchRequest request = new SearchRequest("user");
// 查询条件
SearchSourceBuilder query = new SearchSourceBuilder()
.query(QueryBuilders.fuzzyQuery("name", "zhangsan").fuzziness(Fuzziness.ONE));
request.source(query);
// 发送请求
SearchResponse response = client.search(request, RequestOptions.DEFAULT);
// 响应
SearchHits hits = response.getHits();
SearchHit[] searchHits = hits.getHits();
for (SearchHit hit : searchHits) {
System.out.println(hit.getId());
System.out.println(hit.getSourceAsString());
}
}
删除
单条删除
private static void deleteDocumentTest(RestHighLevelClient client) throws Exception {
// 创建请求
DeleteRequest request = new DeleteRequest();
request.index("user").id("iBkvwo4BTeceah33aM8P");
// 发送请求
client.delete(request, RequestOptions.DEFAULT);
}
批量删除
private static void batchDeleteDocumentTest(RestHighLevelClient client) throws Exception {
// 创建请求
BulkRequest request = new BulkRequest();
// 添加请求
request.add(new DeleteRequest("user").id("iRkzwo4BTeceah33F88"));
request.add(new DeleteRequest("user").id("ihkzwo4BTeceah33x8_n"));
request.add(new DeleteRequest("user").id("ixm7wo4BTeceah33j8-D"));
request.add(new DeleteRequest("user").id("jBm7wo4BTeceah33j8-D"));
request.add(new DeleteRequest("user").id("jRm7wo4BTeceah33j8-D"));
// 发送请求
BulkResponse responses = client.bulk(request, RequestOptions.DEFAULT);
// 响应
System.out.println(responses.status());
}