目錄
Java api 實現(xiàn)搜索
Pom.xml
建立鏈接
搜索全部記錄
增加規(guī)則值查某些字段
搜索分頁
全代碼
Ids 搜索
關(guān)鍵詞搜索Match搜索
multi_match 搜索 多字段搜索
復(fù)雜查詢 bool查詢
filter? bool 復(fù)雜查詢增加過濾器查詢
復(fù)雜擦好像加排序
日志
Java api 實現(xiàn)搜索
思路 參考 api 寫法 寫Java代碼 請求條件構(gòu)建層次思路
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);
??? //執(zhí)行
??? SearchResponse searchResponse = client.search(searchRequest,RequestOptions.DEFAULT);
??? //看結(jié)果
??? SearchHits hits = searchResponse.getHits();
??? for(SearchHit key : hits.getHits()){
??????? log.info(key.getId()+key.getSourceAsMap().get("name")+key.getSourceAsMap().get("age"));
??? }
???
}
增加規(guī)則值查某些字段
//只獲取name字段
searchSourceBuilder.fetchSource(new String[]{"name"},new String[]{});
//日志?? - 3ss this is the null
搜索分頁
構(gòu)建請求的時候增加如下代碼即可
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();
??? //查詢?nèi)???? 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);
??? //執(zhí)行
??? SearchResponse searchResponse = client.search(searchRequest,RequestOptions.DEFAULT);
??? //看結(jié)果
??? 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();
??? //查詢?nèi)???? searchSourceBuilder.query(QueryBuilders.idsQuery().addIds("1","3"));
??? searchRequest.source(searchSourceBuilder);
??? //執(zhí)行
??? SearchResponse searchResponse = client.search(searchRequest,RequestOptions.DEFAULT);
??? //看結(jié)果
??? SearchHits hits = searchResponse.getHits();
??? for(SearchHit key : hits.getHits()){
??????? log.info(key.getId()+key.getSourceAsMap().get("name")+key.getSourceAsMap().get("age"));
??? }
}
關(guān)鍵詞搜索Match搜索
//搜索match 搜索
@Test
public void t3() throws IOException {
??? //請求
??? SearchRequest searchRequest = new SearchRequest("myindex");
??? SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
??? //查詢?nèi)???? searchSourceBuilder.query(QueryBuilders.matchQuery("name","is"));
??? searchRequest.source(searchSourceBuilder);
??? //執(zhí)行
??? SearchResponse searchResponse = client.search(searchRequest,RequestOptions.DEFAULT);
??? //看結(jié)果
??? 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);
??? //執(zhí)行
??? SearchResponse searchResponse = client.search(searchRequest,RequestOptions.DEFAULT);
??? //看結(jié)果
??? SearchHits hits = searchResponse.getHits();
??? for(SearchHit key : hits.getHits()){
??????? log.info(key.getId()+key.getSourceAsMap().get("name")+key.getSourceAsMap().get("age"));
??? }
}
復(fù)雜查詢 bool查詢
/**
* 復(fù)雜查詢 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);
//執(zhí)行
SearchResponse searchResponse = client.search(searchRequest,RequestOptions.DEFAULT);
//看結(jié)果
SearchHits hits = searchResponse.getHits();
for(SearchHit key : hits.getHits()){
log.info(key.getId()+key.getSourceAsMap().get("name")+key.getSourceAsMap().get("age"));
}
}
filter? bool 復(fù)雜查詢增加過濾器查詢
/**
* filter bool 復(fù)雜查詢增加過濾器查詢
*
* @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);
//執(zhí)行
SearchResponse searchResponse = client.search(searchRequest,RequestOptions.DEFAULT);
//看結(jié)果
SearchHits hits = searchResponse.getHits();
for(SearchHit key : hits.getHits()){
log.info(key.getId()+" value="+key.getSourceAsMap().get("name")+key.getSourceAsMap().get("age"));
}
}
復(fù)雜擦好像加排序
/**
* filter bool 復(fù)雜查詢增加過濾器查詢 加排序
*
* @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);
//執(zhí)行
SearchResponse searchResponse = client.search(searchRequest,RequestOptions.DEFAULT);
//看結(jié)果
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文章來源:http://www.zghlxwxcb.cn/news/detail-764793.html
持續(xù)更新文章來源地址http://www.zghlxwxcb.cn/news/detail-764793.html
到了這里,關(guān)于ES es Elasticsearch 十三 Java api 實現(xiàn)搜索 分頁查詢 復(fù)雜查詢 過濾查詢 ids查詢 等的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!