栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

springMVC下使用ElasticSearch

springMVC下使用ElasticSearch

springMVC下使用ElasticSearch
    • 这个包可能会与httpclient包发生版本冲突

导包,采用高版本,不然会出现获取不到总数问题,详情见: https://blog.csdn.net/m0_46869111/article/details/121442853?spm=1001.2014.3001.5501


		org.elasticsearch.client
		elasticsearch-rest-high-level-client
		6.8.4

client配置

public static RestHighLevelClient getClient1() {
        HttpHost http = new HttpHost("127.0.0.1", 9200, "http");

        final CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
        credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials("username", "password"));

        RestClientBuilder builder = RestClient.builder(http).setRequestConfigCallback(new RestClientBuilder.RequestConfigCallback() {
            @Override
            public RequestConfig.Builder customizeRequestConfig(RequestConfig.Builder requestConfigBuilder) {
                requestConfigBuilder.setConnectTimeout(-1);
                requestConfigBuilder.setSocketTimeout(-1);
                requestConfigBuilder.setConnectionRequestTimeout(-1);
                return requestConfigBuilder;
            }
        }).setHttpClientConfigCallback(new RestClientBuilder.HttpClientConfigCallback() {
            @Override
            public HttpAsyncClientBuilder customizeHttpClient(HttpAsyncClientBuilder httpClientBuilder) {
                httpClientBuilder.disableAuthCaching();
                return httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider);
            }
        }).setMaxRetryTimeoutMillis(5*60*1000);

        RestHighLevelClient client = new RestHighLevelClient(builder);
        return client;
    }

es使用

public static List search(String sortTime, String index, String keyword, String keyword2, int start, int count) throws IOException {

        RestHighLevelClient client = getClient1();

        SearchRequest searchRequest = new SearchRequest(index);

        SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();

        sourceBuilder.trackTotalHits(true);

        //bool多条件匹配
        BoolQueryBuilder boolQueryBuilder=new BoolQueryBuilder();

        //关键字匹配
        if (StringUtils.isNotBlank(keyword)){
//            TermQueryBuilder termQueryBuilder=new TermQueryBuilder("message",keyword);
//            //将多个条件加到bool匹配中
//            boolQueryBuilder.must(termQueryBuilder);
            MatchQueryBuilder matchQueryBuilder1 = new MatchQueryBuilder("message", keyword);
            //将多个条件加到bool匹配中
            boolQueryBuilder.must(matchQueryBuilder1);
        }

        //全文检索匹配对应字段
        if (StringUtils.isNotBlank(keyword2)){
            MatchQueryBuilder matchQueryBuilder = new MatchQueryBuilder("message", keyword2);
            //将多个条件加到bool匹配中
            boolQueryBuilder.must(matchQueryBuilder);
        }


        sourceBuilder.query(boolQueryBuilder);
        //第几页
        sourceBuilder.from(start);
        //第几条
        sourceBuilder.size(count);

        searchRequest.source(sourceBuilder);

        //根据前端选择的排序来排序
        if (sortTime.equals("1")){
            sourceBuilder.sort(SortBuilders.fieldSort("排序字段").order(SortOrder.DESC));
        }else {
            sourceBuilder.sort(SortBuilders.fieldSort("排序字段").order(SortOrder.ASC));
        }

        //执行查询
        SearchResponse searchResponse = client.search(searchRequest,RequestOptions.DEFAULT);

        //获取查询总数
        long totalHits = searchResponse.getHits().getTotalHits();
        sumSize = totalHits;

        SearchHits hits = searchResponse.getHits();

        List matchRsult = new linkedList<>();
        //获取值并进行裁切封装(根据自己的实际情况封装)
        for (SearchHit hit : hits.getHits())
        {
            String messageJson = hit.getSourceAsMap().get("message").toString();
            Map map = new HashMap<>();
            Map messageMap = JSON.parseObject(messageJson, Map.class);
            String message = messageMap.get("message").toString();
            map.put("message",message);
            matchRsult.add(map);
        }
        return matchRsult;

**

这个包可能会与httpclient包发生版本冲突

**

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/663458.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号