先开启ES服务器
随后应用IDEA,调用JAVA的API进行 操作
基础操作
为方便后面数据的调用,创建User类
public class User {
private String name;
private String sex;
private Integer age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
创建客户端
public static void main(String[] args) throws IOException {
//创建ES客户端
RestHighLevelClient esClient = new RestHighLevelClient(
RestClient.builder(new HttpHost("localhost", 9200, "http"))
);
//关闭ES 客户端
esClient.close();
}
创建索引
public static void main(String[] args) throws IOException {
RestHighLevelClient esClient = new RestHighLevelClient(
RestClient.builder(new HttpHost("localhost", 9200, "http"))
);
//创建索引
CreateIndexRequest request = new CreateIndexRequest("user");
CreateIndexResponse createIndexResponse = esClient.indices().create(request, RequestOptions.DEFAULT);
//响应状态
boolean acknowledged = createIndexResponse.isAcknowledged();
System.out.println("索引操作:" + acknowledged);
esClient.close();
}
查询索引
public static void main(String[] args) throws IOException {
RestHighLevelClient esClient = new RestHighLevelClient(
RestClient.builder(new HttpHost("localhost", 9200, "http"))
);
//查询索引
GetIndexRequest request = new GetIndexRequest("user");
GetIndexResponse getIndexResponse = esClient.indices().get(request, RequestOptions.DEFAULT);
//响应状态
System.out.println(getIndexResponse.getAliases());
System.out.println(getIndexResponse.getMappings());
System.out.println(getIndexResponse.getSettings());
esClient.close();
}
索引删除
public static void main(String[] args) throws IOException {
RestHighLevelClient esClient = new RestHighLevelClient(
RestClient.builder(new HttpHost("localhost", 9200, "http"))
);
//删除索引
DeleteIndexRequest request = new DeleteIndexRequest("user");
AcknowledgedResponse response = esClient.indices().delete(request, RequestOptions.DEFAULT);
//响应状态
System.out.println(response.isAcknowledged());
esClient.close();
}
创建文档
public static void main(String[] args) throws IOException {
RestHighLevelClient esClient = new RestHighLevelClient(
RestClient.builder(new HttpHost("localhost", 9200, "http"))
);
//插入数据
IndexRequest request = new IndexRequest();
request.index("user").id("1001");
User user = new User();
user.setName("zhangsan");
user.setAge(30);
user.setSex("男");
//向ES插入数据,必须将数据转换为JSON格式
ObjectMapper mapper = new ObjectMapper();
String userJson = mapper.writeValueAsString(user);
request.source(userJson, XContentType.JSON);
IndexResponse response = esClient.index(request, RequestOptions.DEFAULT);
System.out.println(response.getResult());
esClient.close();
}
得到文档
public static void main(String[] args) throws IOException {
RestHighLevelClient esClient = new RestHighLevelClient(
RestClient.builder(new HttpHost("localhost", 9200, "http"))
);
//查询数据
GetRequest request = new GetRequest();
request.index("user").id("1001");
GetResponse response = esClient.get(request, RequestOptions.DEFAULT);
System.out.println(response.getSourceAsString());
esClient.close();
}
删除文档
public static void main(String[] args) throws IOException {
RestHighLevelClient esClient = new RestHighLevelClient(
RestClient.builder(new HttpHost("localhost", 9200, "http"))
);
//删除数据
DeleteRequest request = new DeleteRequest();
request.index("user").id("1001");
DeleteResponse response = esClient.delete(request, RequestOptions.DEFAULT);
System.out.println(response.toString());
esClient.close();
}
批量操作
批量插入
public static void main(String[] args) throws IOException {
RestHighLevelClient esClient = new RestHighLevelClient(
RestClient.builder(new HttpHost("localhost", 9200, "http"))
);
//批量插入数据
BulkRequest request = new BulkRequest();
IndexRequest source1 = new IndexRequest().index("user").id("1001").source(XContentType.JSON, "name", "zhangsan", "age", 30, "sex", "男");
IndexRequest source2 = new IndexRequest().index("user").id("1002").source(XContentType.JSON, "name", "lisi", "age", 30, "sex", "女");
IndexRequest source3 = new IndexRequest().index("user").id("1003").source(XContentType.JSON, "name", "wangwu1", "age", 40, "sex", "男");
IndexRequest source4 = new IndexRequest().index("user").id("1004").source(XContentType.JSON, "name", "wangwu2", "age", 40, "sex", "女");
IndexRequest source5 = new IndexRequest().index("user").id("1005").source(XContentType.JSON, "name", "wangwu3", "age", 50, "sex", "男");
IndexRequest source6 = new IndexRequest().index("user").id("1006").source(XContentType.JSON, "name", "wangwu4", "age", 50, "sex", "男");
request.add(source1);
request.add(source2);
request.add(source3);
request.add(source4);
request.add(source5);
request.add(source6);
BulkResponse bulk = esClient.bulk(request, RequestOptions.DEFAULT);
System.out.println(bulk.getTook());
System.out.println(bulk.getItems());
esClient.close();
}
批量删除
public static void main(String[] args) throws IOException {
RestHighLevelClient esClient = new RestHighLevelClient(
RestClient.builder(new HttpHost("localhost", 9200, "http"))
);
//批量删除数据
BulkRequest request = new BulkRequest();
DeleteRequest source1 = new DeleteRequest().index("user").id("1001");
DeleteRequest source2 = new DeleteRequest().index("user").id("1002");
DeleteRequest source3 = new DeleteRequest().index("user").id("1003");
request.add(source1);
request.add(source2);
request.add(source3);
BulkResponse bulk = esClient.bulk(request, RequestOptions.DEFAULT);
System.out.println(bulk.getTook());
System.out.println(bulk.getItems());
esClient.close();
}
高级操作
public static void main(String[] args) throws IOException {
RestHighLevelClient esClient = new RestHighLevelClient(
RestClient.builder(new HttpHost("localhost", 9200, "http"))
);
//1、查询索引中全部的数据
// SearchRequest request = new SearchRequest();
// request.indices("user");
//
// SearchSourceBuilder query = new SearchSourceBuilder().query(QueryBuilders.matchAllQuery());
// request.source(query);
//
// SearchResponse searchResponse = esClient.search(request, RequestOptions.DEFAULT);
//
// SearchHits hits = searchResponse.getHits();
//
// System.out.println(hits.getTotalHits());
// System.out.println(searchResponse.getTook());
// for (SearchHit hit : hits) {
// System.out.println(hit.getSourceAsString());
// }
//2.条件查询:termQuery
// SearchRequest request = new SearchRequest();
// request.indices("user");
//
// SearchSourceBuilder query = new SearchSourceBuilder().query(QueryBuilders.termQuery("age",30));
// request.source(query);
//
// SearchResponse searchResponse = esClient.search(request, RequestOptions.DEFAULT);
//
// SearchHits hits = searchResponse.getHits();
//
// System.out.println(hits.getTotalHits());
// System.out.println(searchResponse.getTook());
// for (SearchHit hit : hits) {
// System.out.println(hit.getSourceAsString());
// }
// //3.分页查询
// SearchRequest request = new SearchRequest();
// request.indices("user");
//
// SearchSourceBuilder query = new SearchSourceBuilder().query(QueryBuilders.matchAllQuery());
// query.from(2);
// query.size(2);
// request.source(query);
//
// SearchResponse searchResponse = esClient.search(request, RequestOptions.DEFAULT);
//
// SearchHits hits = searchResponse.getHits();
//
// System.out.println(hits.getTotalHits());
// System.out.println(searchResponse.getTook());
// for (SearchHit hit : hits) {
// System.out.println(hit.getSourceAsString());
// }
// //4.查询排序
// SearchRequest request = new SearchRequest();
// request.indices("user");
//
// SearchSourceBuilder query = new SearchSourceBuilder().query(QueryBuilders.matchAllQuery());
// query.sort("age", SortOrder.DESC);
//
// request.source(query);
//
// SearchResponse searchResponse = esClient.search(request, RequestOptions.DEFAULT);
//
// SearchHits hits = searchResponse.getHits();
//
// System.out.println(hits.getTotalHits());
// System.out.println(searchResponse.getTook());
// for (SearchHit hit : hits) {
// System.out.println(hit.getSourceAsString());
// }
// //5.过滤字段
// SearchRequest request = new SearchRequest();
// request.indices("user");
//
// SearchSourceBuilder query = new SearchSourceBuilder().query(QueryBuilders.matchAllQuery());
// String[] excludes = {};
// String[] includes = {"name"};
// query.fetchSource(includes,excludes);
//
// request.source(query);
//
// SearchResponse searchResponse = esClient.search(request, RequestOptions.DEFAULT);
//
// SearchHits hits = searchResponse.getHits();
//
// System.out.println(hits.getTotalHits());
// System.out.println(searchResponse.getTook());
// for (SearchHit hit : hits) {
// System.out.println(hit.getSourceAsString());
// }
// //6.组合查询
// SearchRequest request = new SearchRequest();
// request.indices("user");
//
// SearchSourceBuilder query = new SearchSourceBuilder();
// BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
//
boolQueryBuilder.must(QueryBuilders.matchQuery("age", 30));
boolQueryBuilder.must(QueryBuilders.matchQuery("sex","男"));
// boolQueryBuilder.should(QueryBuilders.matchQuery("age", 30));
// boolQueryBuilder.should(QueryBuilders.matchQuery("age", 40));
//
// query.query(boolQueryBuilder);
// request.source(query);
//
// SearchResponse searchResponse = esClient.search(request, RequestOptions.DEFAULT);
//
// SearchHits hits = searchResponse.getHits();
//
// System.out.println(hits.getTotalHits());
// System.out.println(searchResponse.getTook());
// for (SearchHit hit : hits) {
// System.out.println(hit.getSourceAsString());
// }
// //7.范围查询
// SearchRequest request = new SearchRequest();
// request.indices("user");
//
// SearchSourceBuilder query = new SearchSourceBuilder();
// RangeQueryBuilder rangeQuery = QueryBuilders.rangeQuery("age");
// rangeQuery.gte(30);
// rangeQuery.lte(40);
//
// query.query(rangeQuery);
//
// request.source(query);
//
// SearchResponse searchResponse = esClient.search(request, RequestOptions.DEFAULT);
//
// SearchHits hits = searchResponse.getHits();
//
// System.out.println(hits.getTotalHits());
// System.out.println(searchResponse.getTook());
// for (SearchHit hit : hits) {
// System.out.println(hit.getSourceAsString());
// }
// //8.模糊查询
// SearchRequest request = new SearchRequest();
// request.indices("user");
//
// SearchSourceBuilder query = new SearchSourceBuilder();
// FuzzyQueryBuilder fuzziness = QueryBuilders.fuzzyQuery("name", "wangwu").fuzziness(Fuzziness.ONE);
// query.query(fuzziness);
//
// request.source(query);
//
// SearchResponse searchResponse = esClient.search(request, RequestOptions.DEFAULT);
//
// SearchHits hits = searchResponse.getHits();
//
// System.out.println(hits.getTotalHits());
// System.out.println(searchResponse.getTook());
// for (SearchHit hit : hits) {
// System.out.println(hit.getSourceAsString());
// }
// //9.高亮查询
// SearchRequest request = new SearchRequest();
// request.indices("user");
//
// SearchSourceBuilder query = new SearchSourceBuilder();
// TermsQueryBuilder termsQueryBuilder = QueryBuilders.termsQuery("name", "zhangsan");
//
// HighlightBuilder highlightBuilder = new HighlightBuilder();
// highlightBuilder.preTags("<font color='red'>");
// highlightBuilder.postTags("</font>");
// highlightBuilder.field("name");
//
// query.highlighter();
// query.query(termsQueryBuilder);
// request.source(query);
//
// SearchResponse searchResponse = esClient.search(request, RequestOptions.DEFAULT);
//
// SearchHits hits = searchResponse.getHits();
//
// System.out.println(hits.getTotalHits());
// System.out.println(searchResponse.getTook());
// for (SearchHit hit : hits) {
// System.out.println(hit.getSourceAsString());
// }
// //10.聚合查询
// SearchRequest request = new SearchRequest();
// request.indices("user");
//
// SearchSourceBuilder query = new SearchSourceBuilder();
//
// AggregationBuilder aggregationBuilder = AggregationBuilders.max("maxAge").field("age");
//
// query.aggregation(aggregationBuilder);
//
// request.source(query);
//
// SearchResponse searchResponse = esClient.search(request, RequestOptions.DEFAULT);
//
// SearchHits hits = searchResponse.getHits();
//
// System.out.println(hits.getTotalHits());
// System.out.println(searchResponse.getTook());
// for (SearchHit hit : hits) {
// System.out.println(hit.getSourceAsString());
// }
//11.分组查询
SearchRequest request = new SearchRequest();
request.indices("user");
SearchSourceBuilder query = new SearchSourceBuilder();
AggregationBuilder aggregationBuilder = AggregationBuilders.terms("ageGroup").field("age");
query.aggregation(aggregationBuilder);
request.source(query);
SearchResponse searchResponse = esClient.search(request, RequestOptions.DEFAULT);
SearchHits hits = searchResponse.getHits();
System.out.println(hits.getTotalHits());
System.out.println(searchResponse.getTook());
for (SearchHit hit : hits) {
System.out.println(hit.getSourceAsString());
}
esClient.close();
}