ElasticSearch之JAVA API简单应用
发布日期:2021-05-08 09:46:40 浏览次数:28 分类:技术文章

本文共 3639 字,大约阅读时间需要 12 分钟。

Java高级REST客户端

添加maven坐标

org.elasticsearch.client
elasticsearch-rest-high-level-client
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;@Servicepublic 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 boxVos = new ArrayList<>(); for(SearchHit hit:searchHit) {
Map
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("连接关闭异常"); } }}

转载地址:https://blog.csdn.net/l_learning/article/details/99900295 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:安卓手机直接调用拍照
下一篇:SpingBoot跨域问题

发表评论

最新留言

初次前来,多多关照!
[***.217.46.12]2024年05月01日 19时40分56秒