ElasticSearchJavaAPI之高级查询(分页查询,高亮查询,正则表达式查询,聚。。。

更新时间:2023-06-14 18:02:34 阅读: 评论:0

ElasticSearchJavaAPI之⾼级查询(分页查询,⾼亮查询,正则表达式查询,
聚。。。
ElasticSearch 封装了很多查询⽅法
⾸先我们需要批量插⼊数据,以做测试使⽤
static void batchInrtDocument(RestHighLevelClient client)throws IOException {
//创建批量新增请求对象
财务流程图BulkRequest request =new BulkRequest();
request.add(new
IndexRequest().index("urxt")
.id("1").source(XContentType.JSON,"name","xt","age","24")
);
request.add(new
IndexRequest().index("urxt")
.id("2").source(XContentType.JSON,"name","java","age","67")
);
request.add(new
IndexRequest().index("urxt")
.id("3").source(XContentType.JSON,"name","python","age","31")
);
request.add(new
IndexRequest().index("urxt")
.id("4").source(XContentType.JSON,"name","go","age","12")
)
;
//客户端发送请求,获取响应对象
BulkRespon respons = client.bulk(request, RequestOptions.DEFAULT);
//打印结果信息
System.out.println("took:"+ Took());
System.out.println("items:"+ Items());
}
查询所有⽂档数据
//查询所有⽂档数据
static void queryAllDocuments(RestHighLevelClient client,SearchRequest request)throws IOException {
// 构建查询的请求体
SearchSourceBuilder sourceBuilder =new SearchSourceBuilder();
// 查询所有数据
sourceBuilder.query(QueryBuilders.matchAllQuery());
//发送请求,获得结果
archFunction(client,request,sourceBuilder);
}
条件查询
//条件查询
井柏然个人资料static void conditionQueryDocuments(RestHighLevelClient client,SearchRequest request)throws IOException {
// 构建查询的请求体
SearchSourceBuilder sourceBuilder =new SearchSourceBuilder();
sourceBuilder.Query("age","24"));
//发送请求,获得结果
archFunction(client,request,sourceBuilder);
}
分页查询
sourceBuilder.query(QueryBuilders.matchAllQuery());
// 分页查询
// 当前页其实索引(第⼀条数据的顺序号), from
sourceBuilder.from(0);
// 每页显⽰多少条 size  默认为10
sourceBuilder.size(2);
/
/发送请求,获得结果
archFunction(client,request,sourceBuilder);
}
对查询进⾏排序
// 对查询进⾏排序
static void orderingQueryDocuments(RestHighLevelClient client,SearchRequest request)throws IOException {
// 构建查询的请求体
SearchSourceBuilder sourceBuilder =new SearchSourceBuilder();
sourceBuilder.query(QueryBuilders.matchAllQuery());
// 排序
sourceBuilder.sort("age", SortOrder.ASC);
//发送请求,获得结果
archFunction(client,request,sourceBuilder);
}
bool查询(组合多条件查询)
// 组合多条件查询
static void combinationQueryDocuments(RestHighLevelClient client,SearchRequest request)throws IOException { // 构建查询的请求体
SearchSourceBuilder sourceBuilder =new SearchSourceBuilder();
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
// 必须包含
boolQueryBuilder.must(QueryBuilders.matchQuery("age","24"));
// ⼀定不含
boolQueryBuilder.mustNot(QueryBuilders.matchQuery("name","go"));
// 可能包含
boolQueryBuilder.should(QueryBuilders.matchQuery("x","男"));
sourceBuilder.query(boolQueryBuilder);
//发送请求,获得结果
archFunction(client,request,sourceBuilder);
}
范围查询
RangeQueryBuilder rangeQuery = QueryBuilders.rangeQuery("age");
// ⼤于等于  gt ⼤于
<("20");
/
/ ⼩于等于 lt ⼩于
路由器设置地址rangeQuery.lte("50");
sourceBuilder.query(rangeQuery);
//发送请求,获得结果
archFunction(client,request,sourceBuilder);
论语拼音怎么读
}
模糊查询
//模糊查询当⽤户输⼊有错误时,使⽤这个功能能在⼀定程度上召回⼀些和输⼊相近的⽂档。
static void fuzzyQueryDocuments(RestHighLevelClient client,SearchRequest request)throws IOException {
// 构建查询的请求体
SearchSourceBuilder sourceBuilder =new SearchSourceBuilder();
//Damerau发现 80% 的⼈类拼写错误的编辑距离都是1. 换句话说, 80% 的拼写错误都可以通过单次编辑修改为原始的字符串.
sourceBuilder.query(QueryBuilders.fuzzyQuery("name","xt2").fuzziness(Fuzziness.ONE));简单又含深意的网名
//发送请求,获得结果
archFunction(client,request,sourceBuilder);
}
通配符查询
//通配符查询⽀持* 任意字符串;?任意⼀个字符
static void wildcardQueryDocuments(RestHighLevelClient client,SearchRequest request){
// 构建查询的请求体
SearchSourceBuilder sourceBuilder =new SearchSourceBuilder();
sourceBuilder.query(QueryBuilders.wildcardQuery("name","x*"));
//发送请求,获得结果
try{
archFunction(client,request,sourceBuilder);
}catch(IOException e){
e.printStackTrace();
}
}
正则表达式查询
正则表达式规则:
‘’."代表任意字符
"+"代表加号之前的最⼩单元匹配⼀次或多次
"*"代表星号之前的最⼩单元匹配零次或多次
"?"代表问号之前的最⼩单元匹配零次或⼀次
"{}"可以被⽤来声明之前的最⼩单元出现⼀个最少次数和最多次数 {2,5} 最少2次,最多5次
"()"被⽤来分组构成⼀个最⼩单元或者说是⼦模式 (ab)+ 代表ab匹配⼀次或多次
"|"可以作为⼀个或的操作符,符号左右侧的内容有⼀个匹配上就认为是匹配成功
"[]"作为⼀个选择符,意思是中括号内的任意字符出现都认为是匹配成功,加上^代表相反的意思,也就是说后的任意字符不出现都认为是匹配成功。
//正则表达式查询
星期天早晨
static void regexpQueryDocuments(RestHighLevelClient client,SearchRequest request){
// 构建查询的请求体
SearchSourceBuilder sourceBuilder =new SearchSourceBuilder();
//''."代表任意字符
//"+"代表加号之前的最⼩单元匹配⼀次或多次
//"*"代表星号之前的最⼩单元匹配零次或多次
//"?"代表问号之前的最⼩单元匹配零次或⼀次
//"{}"可以被⽤来声明之前的最⼩单元出现⼀个最少次数和最多次数 {2,5} 最少2次,最多5次
//"()"被⽤来分组构成⼀个最⼩单元或者说是⼦模式  (ab)+ 代表ab匹配⼀次或多次
//"|"可以作为⼀个或的操作符,符号左右侧的内容有⼀个匹配上就认为是匹配成功
//"[]"作为⼀个选择符,意思是中括号内的任意字符出现都认为是匹配成功,加上^代表相反的意思,也就是说后的任意字符不出现都认为是匹配成功。    sourceBuilder.pQuery("name","x.*"));
//发送请求,获得结果
try{
archFunction(client,request,sourceBuilder);
英语倒装句的归纳总结}catch(IOException e){
e.printStackTrace();
}
}
⾼亮查询
中华美德小故事// ⾼亮查询
static void highlightQueryDocuments(RestHighLevelClient client)throws IOException {
SearchRequest request =new SearchRequest().indices("urxt");
//2.创建查询请求体构建器
SearchSourceBuilder sourceBuilder =new SearchSourceBuilder();
//构建查询⽅式:⾼亮查询
TermsQueryBuilder termsQueryBuilder =
//设置查询⽅式
sourceBuilder.query(termsQueryBuilder);
//构建⾼亮字段
HighlightBuilder highlightBuilder =new HighlightBuilder();
highlightBuilder.preTags("<font color='red'>");//设置标签前缀可以⾃定义默认为em 标签对
highlightBuilder.postTags("</font>");//设置标签后缀
highlightBuilder.field("name");//设置⾼亮字段
//设置⾼亮构建对象
sourceBuilder.highlighter(highlightBuilder);
/
/设置请求体
request.source(sourceBuilder);
//3.客户端发送请求,获取响应对象
SearchRespon respon = client.arch(request, RequestOptions.DEFAULT);
//4.打印响应结果
SearchHits hits = Hits();
System.out.println("took:"+Took());
System.out.println("time_out:"+respon.isTimedOut());
System.out.println("total:"+TotalHits());
System.out.println("max_score:"+MaxScore());
System.out.println("--------------hits-------------");
for(SearchHit hit : hits){
String sourceAsString = SourceAsString();
System.out.println(sourceAsString);
//打印⾼亮结果
Map<String, HighlightField> highlightFields = HighlightFields();
System.out.println(highlightFields);
}
System.out.println("--------------hits-------------");
}
聚合查询
//聚合查询
static void aggregateQueryDocuments(RestHighLevelClient client,SearchRequest request)throws IOException {
SearchSourceBuilder sourceBuilder =new SearchSourceBuilder();
sourceBuilder.aggregation(
// ⾥⾯封装了很多其他操作,可以⾃⼰修改
);
//发送请求,获得结果
archFunction(client,request,sourceBuilder);
}
如下图所⽰,封装了很多操作

本文发布于:2023-06-14 18:02:34,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/82/954257.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:查询   请求   匹配   代表   发送   结果   任意   构建
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图