目录
Java api 实现搜索
Pom.xml
建立链接
搜索全部记录
增加规则值查某些字段
搜索分页
全代码
Ids 搜索
关键词搜索Match搜索
multi_match 搜索 多字段搜索
复杂查询 bool查询
filter bool 复杂查询增加过滤器查询
复杂擦好像加排序
日志
Java api 实现搜索
思路 参考 api 写法 写Java代码 请求条件构建层次思路
Pom.xml
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-high-level-client</artifactId>
<version>7.3.0</version>
<exclusions>
<exclusion>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
<version>7.3.0</version>
</dependency>
建立链接
private RestHighLevelClient client = new RestHighLevelClient(RestClient.builder(HttpHost.create("http://localhost:9200")));
搜索全部记录
private RestHighLevelClient client;
//搜索全部记录
@Test
public void t1() throws IOException {
client = new RestHighLevelClient(RestClient.builder(HttpHost.create("http://localhost:9200")));
//请求
SearchRequest searchRequest = new SearchRequest("myindex");
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
searchSourceBuilder.query(QueryBuilders.matchAllQuery());
//日志 - 3ss this is the 19
//只获取name字段
searchSourceBuilder.fetchSource(new String[]{"name"},new String[]{});
//日志 - 3ss this is the null
searchRequest.source(searchSourceBuilder);
//执行
SearchResponse searchResponse = client.search(searchRequest,RequestOptions.DEFAULT);
//看结果
SearchHits hits = searchResponse.getHits();
for(SearchHit key : hits.getHits()){
log.info(key.getId()+key.getSourceAsMap().get("name")+key.getSourceAsMap().get("age"));
}
}
增加规则值查某些字段
//只获取name字段
searchSourceBuilder.fetchSource(new String[]{"name"},new String[]{});
//日志 - 3ss this is the null
搜索分页
构建请求的时候增加如下代码即可
int page = 1;//几页
int size = 3;//几条
searchSourceBuilder.from((page-1)*size);
searchSourceBuilder.size(size);
全代码
//搜索全部记录
@Test
public void t1() throws IOException {
client = new RestHighLevelClient(RestClient.builder(HttpHost.create("http://localhost:9200")));
//请求
SearchRequest searchRequest = new SearchRequest("myindex");
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
//查询全部
searchSourceBuilder.query(QueryBuilders.matchAllQuery());
//日志 - 3ss this is the 19
//只获取name字段
searchSourceBuilder.fetchSource(new String[]{"name"},new String[]{});
//日志 - 3ss this is the null
//分页
int page = 1;
int size = 3;
searchSourceBuilder.from((page-1)*size);
searchSourceBuilder.size(size);
searchRequest.source(searchSourceBuilder);
//执行
SearchResponse searchResponse = client.search(searchRequest,RequestOptions.DEFAULT);
//看结果
SearchHits hits = searchResponse.getHits();
for(SearchHit key : hits.getHits()){
log.info(key.getId()+key.getSourceAsMap().get("name")+key.getSourceAsMap().get("age"));
}
}
Ids 搜索
//搜索id 搜索
@Test
public void t2() throws IOException {
//请求
SearchRequest searchRequest = new SearchRequest("myindex");
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
//查询全部
searchSourceBuilder.query(QueryBuilders.idsQuery().addIds("1","3"));
searchRequest.source(searchSourceBuilder);
//执行
SearchResponse searchResponse = client.search(searchRequest,RequestOptions.DEFAULT);
//看结果
SearchHits hits = searchResponse.getHits();
for(SearchHit key : hits.getHits()){
log.info(key.getId()+key.getSourceAsMap().get("name")+key.getSourceAsMap().get("age"));
}
}
关键词搜索Match搜索
//搜索match 搜索
@Test
public void t3() throws IOException {
//请求
SearchRequest searchRequest = new SearchRequest("myindex");
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
//查询全部
searchSourceBuilder.query(QueryBuilders.matchQuery("name","is"));
searchRequest.source(searchSourceBuilder);
//执行
SearchResponse searchResponse = client.search(searchRequest,RequestOptions.DEFAULT);
//看结果
SearchHits hits = searchResponse.getHits();
for(SearchHit key : hits.getHits()){
log.info(key.getId()+key.getSourceAsMap().get("name")+key.getSourceAsMap().get("age"));
}
}
multi_match 搜索 多字段搜索
//搜索multi_match 搜索 多字段搜索
@Test
public void t4() throws IOException {
//请求
SearchRequest searchRequest = new SearchRequest("myindex");
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
searchSourceBuilder.query(QueryBuilders.multiMatchQuery("is","name","age"));
searchRequest.source(searchSourceBuilder);
//执行
SearchResponse searchResponse = client.search(searchRequest,RequestOptions.DEFAULT);
//看结果
SearchHits hits = searchResponse.getHits();
for(SearchHit key : hits.getHits()){
log.info(key.getId()+key.getSourceAsMap().get("name")+key.getSourceAsMap().get("age"));
}
}
复杂查询 bool查询
/**
* 复杂查询 bool 查询 多字段查询 加 可查到可不查到should
*
* @author jianghaoyu
*
*/
@Test
public void t5() throws IOException {
//请求
SearchRequest searchRequest = new SearchRequest("myindex");
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
BoolQueryBuilder bqb = new BoolQueryBuilder();
MultiMatchQueryBuilder mmqb = QueryBuilders.multiMatchQuery("is","name","age");
bqb.must(mmqb);
bqb.should(QueryBuilders.matchQuery("name","is"));
searchSourceBuilder.query(QueryBuilders.multiMatchQuery("is","name","age"));
searchRequest.source(searchSourceBuilder);
//执行
SearchResponse searchResponse = client.search(searchRequest,RequestOptions.DEFAULT);
//看结果
SearchHits hits = searchResponse.getHits();
for(SearchHit key : hits.getHits()){
log.info(key.getId()+key.getSourceAsMap().get("name")+key.getSourceAsMap().get("age"));
}
}
filter bool 复杂查询增加过滤器查询
/**
* filter bool 复杂查询增加过滤器查询
*
* @author jianghaoyu
*
*/
@Test
public void t6() throws IOException {
//请求
SearchRequest searchRequest = new SearchRequest("myindex");
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
BoolQueryBuilder bqb = new BoolQueryBuilder();
MultiMatchQueryBuilder mmqb = QueryBuilders.multiMatchQuery("is","name","age");
bqb.must(mmqb);
bqb.should(QueryBuilders.matchQuery("name","is"));
bqb.filter(QueryBuilders.rangeQuery("ages").gte(30).lte("90"));
searchSourceBuilder.query(bqb);
searchRequest.source(searchSourceBuilder);
//执行
SearchResponse searchResponse = client.search(searchRequest,RequestOptions.DEFAULT);
//看结果
SearchHits hits = searchResponse.getHits();
for(SearchHit key : hits.getHits()){
log.info(key.getId()+" value="+key.getSourceAsMap().get("name")+key.getSourceAsMap().get("age"));
}
}
复杂擦好像加排序
/**
* filter bool 复杂查询增加过滤器查询 加排序
*
* @author jianghaoyu
*
*/
@Test
public void t7() throws IOException {
//请求
SearchRequest searchRequest = new SearchRequest("myindex");
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
BoolQueryBuilder bqb = new BoolQueryBuilder();
MultiMatchQueryBuilder mmqb = QueryBuilders.multiMatchQuery("is","name","age");
bqb.must(mmqb);
bqb.should(QueryBuilders.matchQuery("name","is"));
bqb.filter(QueryBuilders.rangeQuery("ages").gte(30).lte("90"));
searchSourceBuilder.query(bqb);
searchSourceBuilder.sort("ages");
searchRequest.source(searchSourceBuilder);
//执行
SearchResponse searchResponse = client.search(searchRequest,RequestOptions.DEFAULT);
//看结果
SearchHits hits = searchResponse.getHits();
for(SearchHit key : hits.getHits()){
log.info(key.getId()+" value="+key.getSourceAsMap().get("name")+key.getSourceAsMap().get("ages"));
}
}
searchSourceBuilder.sort("ages", SortOrder.DESC);
日志
23-06-01.17:37:51.316 [main ] INFO SpringBootEsApplicationTestsGj - 6 value=ss this is the 55
23-06-01.17:37:51.316 [main ] INFO SpringBootEsApplicationTestsGj - 62 value=ss this is the 59
23-06-01.17:37:51.317 [main ] INFO SpringBootEsApplicationTestsGj - 66 value=ss this is the 66
23-06-01.17:37:51.317 [main ] INFO SpringBootEsApplicationTestsGj - 3 value=ss this is the 83
23-06-01.17:37:51.317 [main ] INFO SpringBootEsApplicationTestsGj - 4 value=ss this is the 83
ok文章来源:https://www.toymoban.com/news/detail-764793.html
持续更新文章来源地址https://www.toymoban.com/news/detail-764793.html
到了这里,关于ES es Elasticsearch 十三 Java api 实现搜索 分页查询 复杂查询 过滤查询 ids查询 等的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!