Java高級(jí)REST客戶端
添加maven坐標(biāo)
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-high-level-client</artifactId>
</dependency>
package com.search.server;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.TimeUnit;
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.TimeValue;
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.FieldSortBuilder;
import org.elasticsearch.search.sort.SortOrder;
import org.springframework.stereotype.Service;
@Service
public class SearchServer {
public void getSmallBoxs(RestHighLevelClient client,String indexName,String type,Integer starNum, Integer endNum,Integer records) throws IOException {
SearchRequest searchRequest = new SearchRequest(indexName);
searchRequest.types(type);
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
searchSourceBuilder.query(QueryBuilders.rangeQuery("width").from(starNum).to(endNum));
searchSourceBuilder.sort(new FieldSortBuilder("width").order(SortOrder.DESC));
searchSourceBuilder.size(records);
// String[] includeFields = new String[] {"id", "name", "width","height"};
// String[] excludeFields = new String[] {"_index","_type","_id","_score"};
// searchSourceBuilder.fetchSource(includeFields, excludeFields);
searchSourceBuilder.fetchSource(true);
searchSourceBuilder.timeout(new TimeValue(10, TimeUnit.SECONDS));
searchRequest.source(searchSourceBuilder);
SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);
SearchHits hits = searchResponse.getHits();
SearchHit[] searchHits = hits.getHits();
getBigBoxs(client, searchHits);
closeConnection(client);
}
private void getBigBoxs(RestHighLevelClient client, SearchHit[] searchHit) throws IOException {
List<Map> boxVos = new ArrayList<>();
for(SearchHit hit:searchHit) {
Map<String, Object> sourceAsMap = hit.getSourceAsMap();
SearchRequest searchRequest = new SearchRequest("bigbox");
searchRequest.types("bigbox");
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
searchSourceBuilder.query(QueryBuilders.matchPhraseQuery("id", sourceAsMap.get("id")));
searchSourceBuilder.fetchSource(true);
searchSourceBuilder.timeout(new TimeValue(10, TimeUnit.SECONDS));
searchRequest.source(searchSourceBuilder);
SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);
SearchHits hits = searchResponse.getHits();
SearchHit[] searchHits = hits.getHits();
sourceAsMap.put("price", 0);
if(searchHits.length>0) {
sourceAsMap.put("price", searchHits[0].getSourceAsMap().get("price"));
}
boxVos.add(sourceAsMap);
}
for(Map map:boxVos) {
System.out.println(map);
}
}
public RestHighLevelClient getConnection(String ip,Integer port) {
try {
RestHighLevelClient client = new RestHighLevelClient(
RestClient.builder(new HttpHost(ip, port, "http")));
return client;
}catch (Exception e) {
throw new RuntimeException("連接異常");
}
}
public void closeConnection(RestHighLevelClient client) {
try {
client.close();
}catch (Exception e) {
throw new RuntimeException("連接關(guān)閉異常");
}
}
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。