Elastic java api学习day02-Search-API

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
这里不做演示(用到了再查就行)

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容