ElasticSearch学习2

QueryBuilders.boolQuery() 条件组合查询 相当于 and
QueryBuilder.matchQuery() 单个分词查询
QueryBuilder.multiMatchQuery() 指定多个字段条件匹配查询
QueryBuilder.fuzzyQuery() 模糊查询
IndicesQueryBuilder.indicesQuery() 索引查询

must 相当于 sql 中的 and
must_not 相当于 sql 中的 not
should 相当于sql 中的 or

match_all 查询所有

term 严格匹配条件,所查询的字段内容要与填入查询框搜索值一致,同时不对检索内容分词,因此如果查询内容长的话,不分词是不能匹配到结果的
range 范围查询数值或日期,gt为大于,gte为大于等于,lt小于,lte小于等于,所搜索的字段值在两个搜索框标识数值之间;
fuzzy 是弹性模糊匹配,有两种匹配模式
query_string 字符片段查询,如果是数字,则严格匹配数字,如果是字符串,则按照自身或者分片词匹配;
missing 查询没有定义该字段或者该字段值为null的数据。


/**
     * 查询sql
     * @param tableName
     * @param queryBean
     * @return Object[]
     */
    private Object[] queryData(String tableName,QueryBean queryBean) throws IOException {
        SearchRequest searchRequest = new SearchRequest(tableName);
        SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
        BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery()
                .must(QueryBuilders.termQuery("tenantId", queryBean.getTenantId()));
        RangeQueryBuilder rangQueryBuilder = QueryBuilders.rangeQuery(dateName)
                    .from(queryBean.getCreateDate())
                    .to(time)
                    .includeUpper(false);
        boolQueryBuilder.must(rangQueryBuilder );
        sourceBuilder.sort(new FieldSortBuilder("createDate").order(SortOrder.DESC));  
        //分页并将查询条件封装进sourceBuilder对象中
        Integer pageNum = queryBean.getPage();
        Integer pageSize = queryBean.getPageSize();
        // 基础索引分页,渠道索引不分页
        if (pageNum != null && pageSize != null && !isChannel) {
            sourceBuilder.from((pageNum - 1) * pageSize).size(pageSize);
        } else {
            sourceBuilder.from(0).size(CommonConstants.ES_MAX_PAGE_NUM);
        }
        sourceBuilder.query(boolQueryBuilder);
        log.info("查询sql:{}",sourceBuilder);
        searchRequest.source(sourceBuilder);
        SearchResponse searchResponse = esTemplate.getClient().search(searchRequest, RequestOptions.DEFAULT);
        if (searchResponse == null || searchResponse.getHits() == null || searchResponse.getHits().getHits() == null) {
            return null;
        }
        return searchResponse.getHits().getHits();
    }

参考地址:
https://www.cnblogs.com/huqi96/p/14875880.html
https://blog.csdn.net/qq_35530042/article/details/106674039

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我为offer而来

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值