有多条件查询 注解很清晰的了
代码:

public List queryByTagLogs(String logType, Map<String, Object> contextMap, Date startTime, Date endTime) {
        List list = new ArrayList();
        // 1.创建并设置SearchSourceBuilder对象
        SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
        BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
        boolQueryBuilder.must(QueryBuilders.matchAllQuery());//查询所有 此处为匹配所有文档
        //elasticsearch 里默认的IK分词器是会将每一个中文都进行了分词的切割,所以你直接想查一整个词  加上.keyword
        boolQueryBuilder.must(QueryBuilders.termQuery("logType.keyword", logType));
        //时间范围的设定
        if (startTime != null && endTime != null){
            boolQueryBuilder.must(QueryBuilders.rangeQuery("operateAt").from(startTime)
                    .to(endTime));
        //把其它参数加进去
        if (contextMap != null){
            contextMap.forEach((key, value) -> {
                if (value != null && !"".equals(value)) {
                    boolQueryBuilder.must(QueryBuilders.matchPhraseQuery(key, value));//must相当于and
        sourceBuilder.query(boolQueryBuilder);// 查询条件--->生成DSL查询语句
        sourceBuilder.from(0);// 第几页
        sourceBuilder.size(100);// 每页多少条数据
//        sourceBuilder.sort("id", SortOrder.ASC); // 设置排序规则
//        sourceBuilder.timeout(new TimeValue(2000));// 设置超时时间为2s
        // 2.创建并设置SearchRequest对象
        SearchRequest searchRequest = new SearchRequest(INDEX);
        searchRequest.types(TYPE); // 设置request要搜索的索引和类型
        searchRequest.source(sourceBuilder);// 设置SearchSourceBuilder查询属性
        try {
            SearchResponse search = client.search(searchRequest, RequestOptions.DEFAULT);//查询
            SearchHits hits = search.getHits();
            for (SearchHit hit: hits
                Map<String, Object> sourceAsMap = hit.getSourceAsMap();
                String operateAt = sourceAsMap.get("operateAt").toString();
                SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS");
                long time = formatter.parse(operateAt).getTime();
                sourceAsMap.put("operateAt", time);
                list.add(sourceAsMap);
        } catch (IOException e) {
            log.error(e.getMessage(), e);
        } catch (ParseException e) {
            log.error(e.getMessage(), e);
        return list;
                    代码:public List queryByTagLogs(String logType, Map&amp;amp;amp;lt;String, Object&amp;amp;amp;gt; contextMap, Date startTime, Date endTime) {        List list = new ArrayList();        // 1.创建并设置SearchSourceBuilder对象     ...
高亮的本质其实是将搜索结果中需要高亮的字段进行替换
public List<Map<String,Object>> searchHighLight(String keyWord,int currentPage,int pageSize) throws Exception{
        List<Map<String, Object>> list = new ArrayList<>()
				
有用过滤条件是从数据库中获取的而且不知道多少个数,所以动态拼接条件 在官网找到一下 最后在这个文章中找到灵感https://www.elastic.co/guide/en/elasticsearch/client/net-api/current/bool-queries.html 在循环中使用按位分配,以将许多查询组合成一个更大的布尔值.NET 在此示例中,我们使用&= Assign运算符创建了一个带有1000个must子句的布尔查询。 var c = new QueryContainer();.
Elasticsearch中数据都存储在分片中,当执行搜索时每个分片独立搜索后,数据再经过整合返回。那么,如果要实现分页查询该怎么办呢? 更多内容参考Elasticsearch资料汇总 按照一般的查询流程来说,如果我想查询前10条数据: 1 客户端请求发给某个节点 2 节点转发给个个分片,查询每个分片上的前10条 3 结果返回给节点,整合数据,提取前10条 4 返回给请求客户端 那么当我想要查询第10条到第 我们在 Elasticsearch API的基础上实现了一个日志查询系统,支持最基本的时间范围选择以及关键词搜索高亮,并且日志展示的表格支持异步分页。 有天用户反馈,查询的时候页面报错 Result window is too large, from + size must be less than or equal to: [10000] but was [24600]. See th...
文章目录1. 需求分析2. 时间区间枚举类TimeScopeEnum3. 前端请求Qo类4. 时间处理的工具类5. 执行查询 1. 需求分析 项目需求:根据时间区间查询elasticsearch中的数据 查询最近7天的数据,前端请求路径: https://10.87.67.226/chahua/api/v1/list?endTime=1651288728694&startTime=1650683928694&timeScope=last7d 查询最近30天的数据,前端请求路径: endTim
Elasticsearch的match查询可以用于多条件查询,可以通过使用bool查询来实现。bool查询可以将多个查询条件组合在一起,包括must、should、must_not和filter。 例如,我们想要查询title字段包含“elasticsearch”和content字段包含“java”的文档,可以使用以下查询: "query": { "bool": { "must": [ { "match": { "title": "elasticsearch" } }, { "match": { "content": "java" } } 这个查询使用了bool查询,将两个match查询条件组合在一起,使用must关键字表示这两个条件都必须满足。如果我们想要查询title字段包含“elasticsearch”或content字段包含“java”的文档,可以使用should关键字: "query": { "bool": { "should": [ { "match": { "title": "elasticsearch" } }, { "match": { "content": "java" } } 这个查询使用了should关键字,表示只要满足其中一个条件即可。如果我们想要查询title字段包含“elasticsearch”但是content字段不包含“java”的文档,可以使用must和must_not关键字: "query": { "bool": { "must": [ { "match": { "title": "elasticsearch" } } "must_not": [ { "match": { "content": "java" } } 这个查询使用了must和must_not关键字,表示title字段必须包含“elasticsearch”,但是content字段不能包含“java”。如果我们想要查询title字段包含“elasticsearch”并且content字段包含“java”,但是只返回score大于等于0.5的文档,可以使用filter关键字: "query": { "bool": { "must": [ { "match": { "title": "elasticsearch" } }, { "match": { "content": "java" } } "filter": { "range": { "_score": { "gte": 0.5 这个查询使用了filter关键字,表示只返回score大于等于0.5的文档。注意,filter查询不会影响score的计算,因此可以提高查询效率。
异常java.lang.NoSuchMethodError: org.apache.poi.ss.usermodel.Sheet.getDrawingPat原因与解决 ~ 黑色~π_π~幽默 ~: 兄弟,导入解决了吗 异常java.lang.NoSuchMethodError: org.apache.poi.ss.usermodel.Sheet.getDrawingPat原因与解决 疯狂挠头: 我的解决了, 赞一个 APNs苹果推送使用的是pushy框架+.p8证书(java后台)(附上与.p12的不同) Dast1Old: 试试这个:https://github.com/Dast1Woop/PushTestTool APNs苹果推送使用的是pushy框架+.p8证书(java后台)(附上与.p12的不同) Dast1Old: 试试这个:https://github.com/Dast1Woop/PushTestTool 异常java.lang.NoSuchMethodError: org.apache.poi.ss.usermodel.Sheet.getDrawingPat原因与解决 aou2ouba: 已从3.2降到3.0.1希望好使