Elasticsearch——Java API 操作 Elasticsearch 软件是由Java语言开发的,所以也可以通过JavaAPI的方式对 Elasticsearch服务进行访问。
Elasticsearch 软件是由Java语言开发的,所以也可以通过JavaAPI的方式对 Elasticsearch服务进行访问。
创建 Maven 项目
我们在 IDEA 开发工具中创建 Maven 项目(模块也可)ES。并修改pom文件,增加Maven依赖关系。
#直接复制在pom文件的中
org.elasticsearch
elasticsearch
7.8.0
org.elasticsearch.client
elasticsearch-rest-high-level-client
7.8.0
org.apache.logging.log4j
log4j-api
2.8.2
org.apache.logging.log4j
log4j-core
2.8.2
com.fasterxml.jackson.core
jackson-databind
2.9.9
junit
junit
4.12
测试连接客户端,若控制台正常关闭无报错正常连接。
public class ESTest_Client {
public static void main(String[] args) throws Exception{
//创建ES客户端
RestHighLevelClient esClient = new RestHighLevelClient(
RestClient.builder(new HttpHost("localhost",9200,"http"))
);
//关闭ES客户端
esClient.close();
}
}
索引操作
创建索引
public class ESTest_Index_Create {
public static void main(String[] args) throws Exception{
//创建ES客户端
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);
//关闭ES客户端
esClient.close();
}
}
查询索引
public class ESTest_Index_Search {
public static void main(String[] args) throws Exception{
//创建ES客户端
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());
//关闭ES客户端
esClient.close();
}
}
删除索引
public class ESTest_Index_DELETE {
public static void main(String[] args) throws Exception{
//创建ES客户端
RestHighLevelClient esClient = new RestHighLevelClient(
RestClient.builder(new HttpHost("localhost",9200,"http"))
);
//删除索引
DeleteIndexRequest request = new DeleteIndexRequest("user");
AcknowledgedResponse delete = esClient.indices().delete(request, RequestOptions.DEFAULT);
//响应状态
System.out.println("响应结果"+delete.isAcknowledged());
//关闭ES客户端
esClient.close();
}
}
文档操作
创建User类
public class User {
private String name;
private int age;
private String sex;
public User(String name, int age, String sex) {
this.name = name;
this.age = age;
this.sex = sex;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
}
新增数据
public class ESTest_Doc_Instert {
public static void main(String[] args) throws Exception{
//创建ES客户端
RestHighLevelClient esClient = new RestHighLevelClient(
RestClient.builder(new HttpHost("localhost",9200,"http"))
);
//插入数据
IndexRequest request = new IndexRequest();
request.index("user").id("1001");
User user = new User("zhangsan",30,"nan");
//ES插入数据为JSON要将user转成JSON
ObjectMapper objectMapper = new ObjectMapper();
String s = objectMapper.writeValueAsString(user);
request.source(s, XContentType.JSON);
IndexResponse index = esClient.index(request, RequestOptions.DEFAULT);
System.out.println(index.getResult());
//关闭ES客户端
esClient.close();
}
}
修改文档
public class ESTest_Doc_Update {
public static void main(String[] args) throws Exception{
//创建ES客户端
RestHighLevelClient esClient = new RestHighLevelClient(
RestClient.builder(new HttpHost("localhost",9200,"http"))
);
//修改数据
UpdateRequest request = new UpdateRequest();
request.index("user").id("1001");
request.doc(XContentType.JSON,"sex","女");
UpdateResponse index = esClient.update(request, RequestOptions.DEFAULT);
System.out.println(index.getResult());
//关闭ES客户端
esClient.close();
}
}
查询数据
public class ESTest_Doc_Search {
public static void main(String[] args) throws Exception{
//创建ES客户端
RestHighLevelClient esClient = new RestHighLevelClient(
RestClient.builder(new HttpHost("localhost",9200,"http"))
);
//查询数据
GetRequest getRequest = new GetRequest();
getRequest.index("user").id("1001");
GetResponse index = esClient.get(getRequest, RequestOptions.DEFAULT);
String sourceAsString = index.getSourceAsString();
System.out.println(sourceAsString);
//关闭ES客户端
esClient.close();
}
}
文档删除
public class ESTest_Doc_Delete {
public static void main(String[] args) throws Exception{
//创建ES客户端
RestHighLevelClient esClient = new RestHighLevelClient(
RestClient.builder(new HttpHost("localhost",9200,"http"))
);
//删除数据
DeleteRequest request = new DeleteRequest();
request.index("user").id("1001");
User user = new User("zhangsan",30,"nan");
DeleteResponse index = esClient.delete(request, RequestOptions.DEFAULT);
System.out.println(index.getResult());
//关闭ES客户端
esClient.close();
}
}
批量新增
public class ESTest_Doc_Instert_Batch {
public static void main(String[] args) throws Exception{
//创建ES客户端
RestHighLevelClient esClient = new RestHighLevelClient(
RestClient.builder(new HttpHost("localhost",9200,"http"))
);
//批量插入数据
BulkRequest bulkRequest = new BulkRequest();
bulkRequest.add(new IndexRequest().index("user").id("1001").source(XContentType.JSON, "name", "zhangsan"));
bulkRequest.add(new IndexRequest().index("user").id("1002").source(XContentType.JSON, "name", "lisi"));
bulkRequest.add(new IndexRequest().index("user").id("1002").source(XContentType.JSON, "name", "wangwu"));
BulkResponse bulk = esClient.bulk(bulkRequest, RequestOptions.DEFAULT);
System.out.println(bulk.getItems());
System.out.println(bulk.getItems());
//关闭ES客户端
esClient.close();
}
}
批量删除
public class ESTest_Doc_Delete_Batch {
public static void main(String[] args) throws Exception{
//创建ES客户端
RestHighLevelClient esClient = new RestHighLevelClient(
RestClient.builder(new HttpHost("localhost",9200,"http"))
);
//批量删除数据
BulkRequest bulkRequest = new BulkRequest();
bulkRequest.add(new DeleteRequest().index("user").id("1001"));
bulkRequest.add(new DeleteRequest().index("user").id("1002"));
bulkRequest.add(new DeleteRequest().index("user").id("1002"));
BulkResponse bulk = esClient.bulk(bulkRequest, RequestOptions.DEFAULT);
System.out.println(bulk.getItems());
System.out.println(bulk.getItems());
//关闭ES客户端
esClient.close();
}
}
高级查询&分页查询
package org.example.ES;
import org.apache.http.HttpHost;
import org.elasticsearch.action.search.SearchRequest;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.client.indices.CreateIndexRequest;
import org.elasticsearch.client.indices.CreateIndexResponse;
import org.elasticsearch.common.unit.Fuzziness;
import org.elasticsearch.index.query.*;
import org.elasticsearch.search.SearchHit;
import org.elasticsearch.search.SearchHits;
import org.elasticsearch.search.aggregations.AggregationBuilder;
import org.elasticsearch.search.aggregations.AggregationBuilders;
import org.elasticsearch.search.builder.SearchSourceBuilder;
import org.elasticsearch.search.fetch.subphase.highlight.HighlightBuilder;
import org.elasticsearch.search.sort.SortOrder;
import javax.naming.directory.SearchResult;
import javax.swing.text.Highlighter;
public class ESTest_Doc_Query {
public static void main(String[] args) throws Exception{
//创建ES客户端
RestHighLevelClient esClient = new RestHighLevelClient(
RestClient.builder(new HttpHost("localhost",9200,"http"))
);
// //1.查询索引中全量数据
// SearchRequest searchRequest = new SearchRequest();
// searchRequest.indices("user");
//
// searchRequest.source(new SearchSourceBuilder().query(QueryBuilders.matchAllQuery()));
// SearchResponse response = esClient.search(searchRequest, RequestOptions.DEFAULT);
//
// SearchHits hits = response.getHits();
// System.out.println(hits.getTotalHits()+" "+ response.getTook());
// for (SearchHit hit : hits){
//
// System.out.println(hit.getSourceAsString());
// }
// //条件查询 :termQuery
// SearchRequest searchRequest = new SearchRequest();
// searchRequest.indices("user");
//
// searchRequest.source(new SearchSourceBuilder().query(QueryBuilders.termQuery("age",30)));
// SearchResponse response = esClient.search(searchRequest, RequestOptions.DEFAULT);
//
// SearchHits hits = response.getHits();
// System.out.println(hits.getTotalHits()+" "+ response.getTook());
// for (SearchHit hit : hits){
//
// System.out.println(hit.getSourceAsString());
// }
//分页查询
// SearchRequest searchRequest = new SearchRequest();
// searchRequest.indices("user");
//
// SearchSourceBuilder query = new SearchSourceBuilder().query(QueryBuilders.matchAllQuery());
// query.from(0);
// query.size(2);
//
// searchRequest.source(query);
// SearchResponse response = esClient.search(searchRequest, RequestOptions.DEFAULT);
//
// SearchHits hits = response.getHits();
// System.out.println(hits.getTotalHits()+" "+ response.getTook());
// for (SearchHit hit : hits){
//
// System.out.println(hit.getSourceAsString());
// }
//查询排序
// SearchRequest searchRequest = new SearchRequest();
// searchRequest.indices("user");
//
// SearchSourceBuilder query = new SearchSourceBuilder().query(QueryBuilders.matchAllQuery());
// query.sort("age", SortOrder.DESC);
//
// searchRequest.source(query);
// SearchResponse response = esClient.search(searchRequest, RequestOptions.DEFAULT);
//
// SearchHits hits = response.getHits();
// System.out.println(hits.getTotalHits()+" "+ response.getTook());
// for (SearchHit hit : hits){
//
// System.out.println(hit.getSourceAsString());
// }
//过滤字段
// SearchRequest searchRequest = new SearchRequest();
// searchRequest.indices("user");
//
// SearchSourceBuilder query = new SearchSourceBuilder().query(QueryBuilders.matchAllQuery());
//
// //排除
// String [] excludes = {"age"};
// //只查询name
// String [] includes = {};
// query.fetchSource(includes,excludes);
//
// searchRequest.source(query);
// SearchResponse response = esClient.search(searchRequest, RequestOptions.DEFAULT);
//
// SearchHits hits = response.getHits();
// System.out.println(hits.getTotalHits()+" "+ response.getTook());
// for (SearchHit hit : hits){
//
// System.out.println(hit.getSourceAsString());
// }
//组合查询
// SearchRequest searchRequest = new SearchRequest();
// searchRequest.indices("user");
//
// SearchSourceBuilder query = new SearchSourceBuilder();
// BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
//
// boolQueryBuilder.must(QueryBuilders.matchQuery("age",30));
// boolQueryBuilder.must(QueryBuilders.matchQuery("sex","男"));
//
//
//
// query.query(boolQueryBuilder);
//
// searchRequest.source(query);
// SearchResponse response = esClient.search(searchRequest, RequestOptions.DEFAULT);
//
// SearchHits hits = response.getHits();
// System.out.println(hits.getTotalHits()+" "+ response.getTook());
// for (SearchHit hit : hits){
//
// System.out.println(hit.getSourceAsString());
// }
//范围查询
// SearchRequest searchRequest = new SearchRequest();
// searchRequest.indices("user");
//
// SearchSourceBuilder query = new SearchSourceBuilder();
// RangeQueryBuilder rangeQuery = QueryBuilders.rangeQuery("age");
//
// rangeQuery.gte(30);
// rangeQuery.lte(40);
//
// query.query(rangeQuery);
//
// searchRequest.source(query);
// SearchResponse response = esClient.search(searchRequest, RequestOptions.DEFAULT);
//
// SearchHits hits = response.getHits();
// System.out.println(hits.getTotalHits()+" "+ response.getTook());
// for (SearchHit hit : hits){
//
// System.out.println(hit.getSourceAsString());
// }
//模糊查询
//
//高亮查询
// SearchRequest searchRequest = new SearchRequest();
// searchRequest.indices("user");
//
// SearchSourceBuilder query = new SearchSourceBuilder();
//
// TermsQueryBuilder termsQueryBuilder = QueryBuilders.termsQuery("name", "zhangsan");
//
// HighlightBuilder highlightBuilder = new HighlightBuilder();
// highlightBuilder.preTags(" color = 'red'");
// highlightBuilder.postTags("");
// highlightBuilder.field("name");
//
// query.highlighter(highlightBuilder);
// query.query(termsQueryBuilder);
//
// searchRequest.source(query);
// SearchResponse response = esClient.search(searchRequest, RequestOptions.DEFAULT);
//
// SearchHits hits = response.getHits();
// System.out.println(hits.getTotalHits()+" "+ response.getTook());
// for (SearchHit hit : hits){
//
// System.out.println(hit.getSourceAsString());
// }
//聚合查询
// SearchRequest searchRequest = new SearchRequest();
// searchRequest.indices("user");
//
// SearchSourceBuilder query = new SearchSourceBuilder();
//
// AggregationBuilder aggregationBuilder = AggregationBuilders.max("maxAge").field("age");
//
// query.aggregation(aggregationBuilder);
//
// query.query();
//
// searchRequest.source(query);
// SearchResponse response = esClient.search(searchRequest, RequestOptions.DEFAULT);
//
// SearchHits hits = response.getHits();
// System.out.println(hits.getTotalHits()+" "+ response.getTook());
// for (SearchHit hit : hits){
//
// System.out.println(hit.getSourceAsString());
// }
//分组查询
SearchRequest searchRequest = new SearchRequest();
searchRequest.indices("user");
SearchSourceBuilder query = new SearchSourceBuilder();
AggregationBuilder aggregationBuilder = AggregationBuilders.terms("ageGrroup").field("age");
query.aggregation(aggregationBuilder);
query.query();
searchRequest.source(query);
SearchResponse response = esClient.search(searchRequest, RequestOptions.DEFAULT);
SearchHits hits = response.getHits();
System.out.println(hits.getTotalHits()+" "+ response.getTook());
for (SearchHit hit : hits){
System.out.println(hit.getSourceAsString());
}
//关闭ES客户端
esClient.close();
}
}
全量查询
条件查询
分页查询
排序查询
只查姓名
排除年龄
多条件查询
范围查询
模糊查询
Elasticsearch——Java API 操作 Elasticsearch 软件是由Java语言开发的,所以也可以通过JavaAPI的方式对 Elasticsearch服务进行访问。Elasticsearch——Java API 操作 Elasticsearch 软件是由Java语言开发的,所以也可以通过JavaAPI的方式对 Elasticsearch服务进行访问。Elasticsearch——Java API 操作 Elasticsearch 软件是由Java语言开发的,所以也可以通过JavaAPI的方式对 Elasticsearch服务进行访问。Elasticsearch——Java API 操作 Elasticsearch 软件是由Java语言开发的,所以也可以通过JavaAPI的方式对 Elasticsearch服务进行访问。Elasticsearch——Java API 操作 Elasticsearch 软件是由Java语言开发的,所以也可以通过JavaAPI的方式对 Elasticsearch服务进行访问。Elasticsearch——Java API 操作 Elasticsearch 软件是由Java语言开发的,所以也可以通过JavaAPI的方式对 Elasticsearch服务进行访问。Elasticsearch——Java API 操作 Elasticsearch 软件是由Java语言开发的,所以也可以通过JavaAPI的方式对 Elasticsearch服务进行访问。Elasticsearch——Java API 操作 Elasticsearch 软件是由Java语言开发的,所以也可以通过JavaAPI的方式对 Elasticsearch服务进行访问。Elasticsearch——Java API 操作 Elasticsearch 软件是由Java语言开发的,所以也可以通过JavaAPI的方式对 Elasticsearch服务进行访问。