美文网首页
Elastic java api学习day02-Search-A

Elastic java api学习day02-Search-A

作者: 万万没想到367 | 来源:发表于2018-07-10 11:49 被阅读0次

    1.termQuery
    我的理解是 输入的查询内容是什么,就会按照什么去查询,并不会解析查询内容,对它分词

     /**
         * termQuery 输入的查询内容是什么,就会按照什么去查询,并不会解析查询内容,对它分词
         * @param index 索引
         * @param type  类型
         * @param param 基础查找实体类
         * @param c     封装实体class
         * @return
         * @throws Exception
         */
        public List<T> termQuery(String index, String type, BaseSearchParam param,Class c) throws Exception {
            SearchRequest searchRequest = new SearchRequest(index);
            searchRequest.types(type);
            SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
            sourceBuilder.query(QueryBuilders.termQuery(param.getName(),param.getValue()));
            sourceBuilder.from(param.getFrom()!=null?param.getFrom():0);
            sourceBuilder.size(param.getSize()!=null?param.getSize():10);
            sourceBuilder.timeout(new TimeValue(60, TimeUnit.SECONDS));
            searchRequest.source(sourceBuilder);
            SearchResponse searchResponse = client.search(searchRequest);
            return utils.hits2List(searchResponse.getHits(),c);
        }
    

    2.matchQuery
    搜索的时候,首先会解析查询字符串,进行分词,然后查询

    /**
         * matchQuery  搜索的时候,首先会解析查询字符串,进行分词,然后查询
         * @param index 索引
         * @param type  类型
         * @param param 查找实体类
         * @param c     封装实体class
         * @return
         * @throws Exception
         */
        public List<T> matchQuery(String index, String type, MatchSearchParam param, Class c) throws Exception {
            SearchRequest searchRequest = new SearchRequest(index);
            searchRequest.types(type);
            SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
            QueryBuilder matchQueryBuilder = QueryBuilders.matchQuery(param.getName(), param.getValue())
                    .fuzziness(Fuzziness.AUTO)
                    .prefixLength(param.getPrefixLength()!=null?param.getPrefixLength():3)
                    .maxExpansions(param.getMaxExpansions()!=null?param.getMaxExpansions():10);
            sourceBuilder.query(matchQueryBuilder);
            searchRequest.source(sourceBuilder);
            SearchResponse searchResponse = client.search(searchRequest);
            return utils.hits2List(searchResponse.getHits(),c);
        }
    

    以上就是最基础的两个查询,至于加入排序,聚合啊等等操作,都有相应的builder
    具体可以见文档:https://www.elastic.co/guide/en/elasticsearch/client/java-rest/6.3/java-rest-high-query-builders.html
    这里不做演示(用到了再查就行)

    相关文章

      网友评论

          本文标题:Elastic java api学习day02-Search-A

          本文链接:https://www.haomeiwen.com/subject/amsfpftx.html