ElasticSearch之JAVA API簡(jiǎn)單應(yīng)用

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ù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容