目录
一、添加依赖
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
<version>7.8.0</version>
</dependency>
<!--elasticsearch客户端-->
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-high-level-client</artifactId>
<version>7.8.0</version>
</dependency>
<!--elasticsearch依赖2.x的log4j-->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.17.1</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.17.1</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.13.3</version>
</dependency>
<!--junit单元测试-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
<scope>test</scope>
</dependency>
</dependencies>
二、索引操作案例
1、创建索引的案例
先通过ApiPost测试访问
可以看到运行代码之前customer文档索引是不存在的
代码:
package com.dragon.test;
import org.apache.http.HttpHost;
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;
/**
* @author DragonWu
* @date 2022-09-17 18:54
**/
public class ElkTestIndexCreate {
public static void main(String[] args) throws Exception{
//创建ES客户端
RestHighLevelClient esClient=new RestHighLevelClient(
RestClient.builder(new HttpHost("localhost",9200,"http"))
);
//创建索引
CreateIndexRequest request = new CreateIndexRequest("customer");
CreateIndexResponse createIndexResponse = esClient.indices().create(request, RequestOptions.DEFAULT);
//响应状态
boolean acknowledged = createIndexResponse.isAcknowledged();
System.out.println("索引操作:"+acknowledged);
//关闭ES客户端
esClient.close();
}
}
再次查询,可以查询到对应文档索引了,证明代码执行成功
索引创建成功
2、获取索引的案例
package com.dragon.test;
import org.apache.http.HttpHost;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.client.indices.GetIndexRequest;
import org.elasticsearch.client.indices.GetIndexResponse;
/**
* @author DragonWu
* @date 2022-09-18 9:16
**/
public class ElkTestIndexSearch {
public static void main(String[] args) throws Exception{
//创建ES客户端
RestHighLevelClient esClient=new RestHighLevelClient(
RestClient.builder(new HttpHost("localhost",9200,"http"))
);
//查询索引
GetIndexRequest request=new GetIndexRequest("customer");
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();
}
}
运行截图
可以看到该索引已被找到。
3、删除索引
package com.dragon.test;
import org.apache.http.HttpHost;
import org.elasticsearch.action.admin.indices.delete.DeleteIndexRequest;
import org.elasticsearch.action.support.master.AcknowledgedResponse;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestHighLevelClient;
/**
* @author DragonWu
* @date 2022-09-18 9:25
**/
public class ElkTestIndexDelete {
public static void main(String[] args) throws Exception{
//创建ES客户端
RestHighLevelClient esClient=new RestHighLevelClient(
RestClient.builder(new HttpHost("localhost",9200,"http"))
);
//查询索引
DeleteIndexRequest request=new DeleteIndexRequest("customer");
AcknowledgedResponse response = esClient.indices().delete(request, RequestOptions.DEFAULT);
//响应状态
System.out.println(response.isAcknowledged());
//关闭ES客户端
esClient.close();
}
}
运行截图
删除成功
三、文档操作案例
1、创建文档
首先创建实体类
package com.dragon.test;
/**
* @author DragonWu
* @date 2022-09-18 9:32
**/
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;
}
}
package com.dragon.test;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.apache.http.HttpHost;
import org.elasticsearch.action.index.IndexRequest;
import org.elasticsearch.action.index.IndexResponse;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.common.xcontent.XContentType;
/**
* @author DragonWu
* @date 2022-09-18 9:34
**/
public class ElkTestDocInsert {
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("1004");
User user=new User();
user.setName("张三");
user.setAge(21);
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());
//关闭ES客户端
esClient.close();
}
}
通过ApiPost查询数据:
可以看到数据已经更新
2、更新文档
package com.dragon.test;
import org.apache.http.HttpHost;
import org.elasticsearch.action.update.UpdateRequest;
import org.elasticsearch.action.update.UpdateResponse;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.common.xcontent.XContentType;
/**
* @author DragonWu
* @date 2022-09-18 9:34
**/
public class ElkTestDocUpdate {
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("1004");
request.doc(XContentType.JSON,"sex","女");
UpdateResponse response = esClient.update(request, RequestOptions.DEFAULT);
System.out.println(response.getResult());
//关闭ES客户端
esClient.close();
}
}
再次查询user的id为1004的文档
可以看到sex已局部更新
3、获取文档
package com.dragon.test;
import org.apache.http.HttpHost;
import org.elasticsearch.action.get.GetRequest;
import org.elasticsearch.action.get.GetResponse;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestHighLevelClient;
/**
* @author DragonWu
* @date 2022-09-18 10:02
**/
public class ElkTestDocSearch {
public static void main(String[] args) throws Exception{
//创建ES客户端
RestHighLevelClient esClient=new RestHighLevelClient(
RestClient.builder(new HttpHost("localhost",9200,"http"))
);
//查询请求
GetRequest request=new GetRequest();
request.index("user").id("1004");
GetResponse documentFields=esClient.get(request, RequestOptions.DEFAULT);
System.out.println(documentFields.getSourceAsString());
//关闭ES客户端
esClient.close();
}
}
运行截图
可以看到文档查询成功
4、删除文档
package com.dragon.test;
import org.apache.http.HttpHost;
import org.elasticsearch.action.delete.DeleteRequest;
import org.elasticsearch.action.delete.DeleteResponse;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestHighLevelClient;
/**
* @author DragonWu
* @date 2022-09-18 10:02
**/
public class ElkTestDocDelete {
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("1004");
DeleteResponse response=esClient.delete(request, RequestOptions.DEFAULT);
System.out.println(response.toString());
//关闭ES客户端
esClient.close();
}
}
再次查询,可以看到查询失败,证明删除成功
5、批量插入
package com.dragon.test;
import org.apache.http.HttpHost;
import org.elasticsearch.action.bulk.BulkRequest;
import org.elasticsearch.action.bulk.BulkResponse;
import org.elasticsearch.action.index.IndexRequest;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.common.xcontent.XContentType;
import java.util.Arrays;
/**
* @author DragonWu
* @date 2022-09-18 10:29
**/
public class ElkTestBatchInsert {
public static void main(String[] args) throws Exception{
//创建ES客户端
RestHighLevelClient esClient=new RestHighLevelClient(
RestClient.builder(new HttpHost("localhost",9200,"http"))
);
//批量插入数据
BulkRequest request=new BulkRequest();
request.add(new IndexRequest().index("user").id("1004").source(XContentType.JSON,"name","李四"));
request.add(new IndexRequest().index("user").id("1005").source(XContentType.JSON,"name","赵六"));
request.add(new IndexRequest().index("user").id("1006").source(XContentType.JSON,"name","洪七"));
BulkResponse response = esClient.bulk(request, RequestOptions.DEFAULT);
System.out.println(response.getTook());
System.out.println(Arrays.toString(response.getItems()));
//关闭ES客户端
esClient.close();
}
}
再次查询
可以看到批量插入成功
6、批量删除
package com.dragon.test;
import org.apache.http.HttpHost;
import org.elasticsearch.action.bulk.BulkRequest;
import org.elasticsearch.action.bulk.BulkResponse;
import org.elasticsearch.action.delete.DeleteRequest;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestHighLevelClient;
import java.util.Arrays;
/**
* @author DragonWu
* @date 2022-09-18 10:29
**/
public class ElkTestBatchDelete {
public static void main(String[] args) throws Exception{
//创建ES客户端
RestHighLevelClient esClient=new RestHighLevelClient(
RestClient.builder(new HttpHost("localhost",9200,"http"))
);
//批量插入数据
BulkRequest request=new BulkRequest();
request.add(new DeleteRequest().index("user").id("1004"));
request.add(new DeleteRequest().index("user").id("1005"));
request.add(new DeleteRequest().index("user").id("1006"));
BulkResponse response = esClient.bulk(request, RequestOptions.DEFAULT);
System.out.println(response.getTook());
System.out.println(Arrays.toString(response.getItems()));
//关闭ES客户端
esClient.close();
}
}
四、高级查询
首先模拟插入数据以便后面的查询
package com.dragon.test;
import org.apache.http.HttpHost;
import org.elasticsearch.action.bulk.BulkRequest;
import org.elasticsearch.action.bulk.BulkResponse;
import org.elasticsearch.action.index.IndexRequest;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.common.xcontent.XContentType;
import java.util.Arrays;
/**
* @author DragonWu
* @date 2022-09-18 10:29
**/
public class ElkTestBatchInsert {
public static void main(String[] args) throws Exception{
//创建ES客户端
RestHighLevelClient esClient=new RestHighLevelClient(
RestClient.builder(new HttpHost("localhost",9200,"http"))
);
//批量插入数据
BulkRequest request=new BulkRequest();
request.add(new IndexRequest().index("user").id("1004").source(XContentType.JSON,"name","李四","age",30,"sex","男"));
request.add(new IndexRequest().index("user").id("1005").source(XContentType.JSON,"name","赵六","age",40,"sex","男"));
request.add(new IndexRequest().index("user").id("1006").source(XContentType.JSON,"name","洪七","age",50,"sex","女"));
request.add(new IndexRequest().index("user").id("1007").source(XContentType.JSON,"name","王五","age",30,"sex","男"));
request.add(new IndexRequest().index("user").id("1008").source(XContentType.JSON,"name","张三","age",40,"sex","男"));
request.add(new IndexRequest().index("user").id("1009").source(XContentType.JSON,"name","王二","age",50,"sex","女"));
BulkResponse response = esClient.bulk(request, RequestOptions.DEFAULT);
System.out.println(response.getTook());
System.out.println(Arrays.toString(response.getItems()));
//关闭ES客户端
esClient.close();
}
}
通过ApiPost查询可以看到如下数据文档列表
{
"took": 945,
"timed_out": false,
"_shards": {
"total": 1,
"successful": 1,
"skipped": 0,
"failed": 0
},
"hits": {
"total": {
"value": 9,
"relation": "eq"
},
"max_score": 1,
"hits": [
{
"_index": "user",
"_id": "1002",
"_score": 1,
"_source": {
"name": "Fack",
"sex": "男",
"tel": 11011011012
}
},
{
"_index": "user",
"_id": "1003",
"_score": 1,
"_source": {
"name": "Alice",
"sex": "女",
"tel": 11011011013
}
},
{
"_index": "user",
"_id": "1001",
"_score": 1,
"_source": {
"name": "张三",
"sex": "男",
"age": 21
}
},
{
"_index": "user",
"_id": "1004",
"_score": 1,
"_source": {
"name": "李四",
"age": 30,
"sex": "男"
}
},
{
"_index": "user",
"_id": "1005",
"_score": 1,
"_source": {
"name": "赵六",
"age": 40,
"sex": "男"
}
},
{
"_index": "user",
"_id": "1006",
"_score": 1,
"_source": {
"name": "洪七",
"age": 50,
"sex": "女"
}
},
{
"_index": "user",
"_id": "1007",
"_score": 1,
"_source": {
"name": "王五",
"age": 30,
"sex": "男"
}
},
{
"_index": "user",
"_id": "1008",
"_score": 1,
"_source": {
"name": "张三",
"age": 40,
"sex": "男"
}
},
{
"_index": "user",
"_id": "1009",
"_score": 1,
"_source": {
"name": "王二",
"age": 50,
"sex": "女"
}
}
]
}
}
1、查询索引下所有文档
package com.dragon.test;
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.index.query.QueryBuilders;
import org.elasticsearch.search.SearchHit;
import org.elasticsearch.search.SearchHits;
import org.elasticsearch.search.builder.SearchSourceBuilder;
/**
* @author DragonWu
* @date 2022-09-18 10:46
**/
public class DocQuery {
public static void main(String[] args) throws Exception {
//创建ES客户端
RestHighLevelClient esClient = new RestHighLevelClient(
RestClient.builder(new HttpHost("localhost", 9200, "http"))
);
//查询索引中全部数据
SearchRequest request = new SearchRequest();
request.indices("user");
request.source(new SearchSourceBuilder().query(QueryBuilders.matchAllQuery()));
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());
}
//关闭ES客户端
esClient.close();
}
}
运行截图
可以看到之前批量插入的数据都获取到了
2、条件查询
package com.dragon.test;
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.index.query.QueryBuilders;
import org.elasticsearch.search.SearchHit;
import org.elasticsearch.search.SearchHits;
import org.elasticsearch.search.builder.SearchSourceBuilder;
/**
* @author DragonWu
* @date 2022-09-18 10:46
**/
public class DocQuery {
public static void main(String[] args) throws Exception {
//创建ES客户端
RestHighLevelClient esClient = new RestHighLevelClient(
RestClient.builder(new HttpHost("localhost", 9200, "http"))
);
//条件查询 : termQuery
SearchRequest request = new SearchRequest();
request.indices("user");
request.source(new SearchSourceBuilder().query(QueryBuilders.termQuery("age",30)));
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());
}
//关闭ES客户端
esClient.close();
}
}
运行截图
可以看到条件查询的数据
3、分页查询
package com.dragon.test;
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.index.query.QueryBuilders;
import org.elasticsearch.search.SearchHit;
import org.elasticsearch.search.SearchHits;
import org.elasticsearch.search.builder.SearchSourceBuilder;
/**
* @author DragonWu
* @date 2022-09-18 10:46
**/
public class DocQuery {
public static void main(String[] args) throws Exception {
//创建ES客户端
RestHighLevelClient esClient = new RestHighLevelClient(
RestClient.builder(new HttpHost("localhost", 9200, "http"))
);
//条件查询 : termQuery
SearchRequest request = new SearchRequest();
request.indices("user");
SearchSourceBuilder builder = new SearchSourceBuilder().query(QueryBuilders.matchAllQuery());
//(当前页码-1)*每页显示的条数
builder.from(0);
builder.size(2);
request.source(builder);
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());
}
//关闭ES客户端
esClient.close();
}
}
可以看到分页查询成功
4、查询排序
package com.dragon.test;
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.index.query.QueryBuilders;
import org.elasticsearch.search.SearchHit;
import org.elasticsearch.search.SearchHits;
import org.elasticsearch.search.builder.SearchSourceBuilder;
import org.elasticsearch.search.sort.SortOrder;
/**
* @author DragonWu
* @date 2022-09-18 10:46
**/
public class DocQuery {
public static void main(String[] args) throws Exception {
//创建ES客户端
RestHighLevelClient esClient = new RestHighLevelClient(
RestClient.builder(new HttpHost("localhost", 9200, "http"))
);
//条件查询 : termQuery
SearchRequest request = new SearchRequest();
request.indices("user");
SearchSourceBuilder builder = new SearchSourceBuilder().query(QueryBuilders.matchAllQuery());
builder.sort("age", SortOrder.DESC);
request.source(builder);
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());
}
//关闭ES客户端
esClient.close();
}
}
排序成功
5、过滤查询
package com.dragon.test;
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.index.query.QueryBuilders;
import org.elasticsearch.search.SearchHit;
import org.elasticsearch.search.SearchHits;
import org.elasticsearch.search.builder.SearchSourceBuilder;
/**
* @author DragonWu
* @date 2022-09-18 10:46
**/
public class DocQuery {
public static void main(String[] args) throws Exception {
//创建ES客户端
RestHighLevelClient esClient = new RestHighLevelClient(
RestClient.builder(new HttpHost("localhost", 9200, "http"))
);
SearchRequest request = new SearchRequest();
request.indices("user");
SearchSourceBuilder builder = new SearchSourceBuilder().query(QueryBuilders.matchAllQuery());
String[] excludes={};
String[] includes={"name"};
builder.fetchSource(includes,excludes);
request.source(builder);
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());
}
//关闭ES客户端
esClient.close();
}
}
可以看到过滤后只剩下name字段
6、组合查询
package com.dragon.test;
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.index.query.BoolQueryBuilder;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.SearchHit;
import org.elasticsearch.search.SearchHits;
import org.elasticsearch.search.builder.SearchSourceBuilder;
/**
* @author DragonWu
* @date 2022-09-18 10:46
**/
public class DocQuery {
public static void main(String[] args) throws Exception {
//创建ES客户端
RestHighLevelClient esClient = new RestHighLevelClient(
RestClient.builder(new HttpHost("localhost", 9200, "http"))
);
SearchRequest request = new SearchRequest();
request.indices("user");
SearchSourceBuilder builder = new SearchSourceBuilder();
BoolQueryBuilder boolQueryBuilder= QueryBuilders.boolQuery();
boolQueryBuilder.should(QueryBuilders.matchQuery("age",30));
boolQueryBuilder.should(QueryBuilders.matchQuery("age",40));
builder.query(boolQueryBuilder);
request.source(builder);
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());
}
//关闭ES客户端
esClient.close();
}
}
运行截图
7、范围查询
package com.dragon.test;
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.index.query.QueryBuilders;
import org.elasticsearch.index.query.RangeQueryBuilder;
import org.elasticsearch.search.SearchHit;
import org.elasticsearch.search.SearchHits;
import org.elasticsearch.search.builder.SearchSourceBuilder;
/**
* @author DragonWu
* @date 2022-09-18 10:46
**/
public class DocQuery {
public static void main(String[] args) throws Exception {
//创建ES客户端
RestHighLevelClient esClient = new RestHighLevelClient(
RestClient.builder(new HttpHost("localhost", 9200, "http"))
);
SearchRequest request = new SearchRequest();
request.indices("user");
SearchSourceBuilder builder = new SearchSourceBuilder();
RangeQueryBuilder rangeQuery = QueryBuilders.rangeQuery("age");
rangeQuery.gte(30);
rangeQuery.lte(40);
builder.query(rangeQuery);
request.source(builder);
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());
}
//关闭ES客户端
esClient.close();
}
}
8、模糊查询
package com.dragon.test;
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.common.unit.Fuzziness;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.SearchHit;
import org.elasticsearch.search.SearchHits;
import org.elasticsearch.search.builder.SearchSourceBuilder;
/**
* @author DragonWu
* @date 2022-09-18 10:46
**/
public class DocQuery {
public static void main(String[] args) throws Exception {
//创建ES客户端
RestHighLevelClient esClient = new RestHighLevelClient(
RestClient.builder(new HttpHost("localhost", 9200, "http"))
);
SearchRequest request = new SearchRequest();
request.indices("user");
SearchSourceBuilder builder = new SearchSourceBuilder();
builder.query(QueryBuilders.fuzzyQuery("name","张三").fuzziness(Fuzziness.ONE));
request.source(builder);
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());
}
//关闭ES客户端
esClient.close();
}
}
9、高亮查询
package com.dragon.test;
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.index.query.QueryBuilders;
import org.elasticsearch.index.query.TermsQueryBuilder;
import org.elasticsearch.search.SearchHit;
import org.elasticsearch.search.SearchHits;
import org.elasticsearch.search.builder.SearchSourceBuilder;
import org.elasticsearch.search.fetch.subphase.highlight.HighlightBuilder;
/**
* @author DragonWu
* @date 2022-09-18 10:46
**/
public class DocQuery {
public static void main(String[] args) throws Exception {
//创建ES客户端
RestHighLevelClient esClient = new RestHighLevelClient(
RestClient.builder(new HttpHost("localhost", 9200, "http"))
);
SearchRequest request = new SearchRequest();
request.indices("user");
SearchSourceBuilder builder = new SearchSourceBuilder();
TermsQueryBuilder termsQueryBuilder = QueryBuilders.termsQuery("name", "李四");
HighlightBuilder highlightBuilder=new HighlightBuilder();
highlightBuilder.preTags("<font color='red'>");
highlightBuilder.postTags("</font>");
highlightBuilder.field("name");
builder.highlighter(highlightBuilder);
builder.query(termsQueryBuilder);
request.source(builder);
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());
}
//关闭ES客户端
esClient.close();
}
}
10、分组查询
package com.dragon.test;
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.search.SearchHit;
import org.elasticsearch.search.SearchHits;
import org.elasticsearch.search.aggregations.AggregationBuilders;
import org.elasticsearch.search.aggregations.bucket.terms.TermsAggregationBuilder;
import org.elasticsearch.search.builder.SearchSourceBuilder;
/**
* @author DragonWu
* @date 2022-09-18 10:46
**/
public class DocQuery {
public static void main(String[] args) throws Exception {
//创建ES客户端
RestHighLevelClient esClient = new RestHighLevelClient(
RestClient.builder(new HttpHost("localhost", 9200, "http"))
);
SearchRequest request = new SearchRequest();
request.indices("user");
SearchSourceBuilder builder=new SearchSourceBuilder();
TermsAggregationBuilder aggregationBuilder = AggregationBuilders.terms("ageGroup").field("age");
builder.aggregation(aggregationBuilder);
request.source(builder);
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());
}
//关闭ES客户端
esClient.close();
}
}