美文网首页
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