1,根据字段数据去重 ?
CollapseBuilder collapseBuilder = new CollapseBuilder("?");
sourceBuilder.collapse(collapseBuilder);
2,排序
super.sourceBuilder.sort(SortBuilders.fieldSort("createTime").order(SortOrder.DESC));
3,设置搜索分页
sourceBuilder.from((searchDto.getPageIndex() - 1) * searchDto.getPageSize()).size(searchDto.getPageSize());
4,搜索条件拼接
.boost() 设置条件等级 .caseInsensitive(true)忽略查询大小写 BoolQueryBuilder boolQueryBuilder = new BoolQueryBuilder()
.must(QueryBuilders.boolQuery()
.must(QueryBuilders.boolQuery()
.should(QueryBuilders.wildcardQuery("title.keyword", searchDto.getKeyword()).boost(5).caseInsensitive(true))
.should(QueryBuilders.wildcardQuery("title.keyword", key).caseInsensitive(true)))
.must(QueryBuilders.boolQuery()
.should(QueryBuilders.boolQuery()
.must(QueryBuilders.termQuery("historyIsDelete", false))
.must(QueryBuilders.termQuery("typeId", "1"))
.must(QueryBuilders.termQuery("playBackRecording", 1))
.must(QueryBuilders.rangeQuery("saveRecordingTime").gte(time))
.must(QueryBuilders.termQuery("transcodingStatus", 1)))
.should(QueryBuilders.boolQuery()
.must(QueryBuilders.termQuery("channelIsDelete", false))
// .must((QueryBuilders.rangeQuery("beginTime").gte(date)))
.must((QueryBuilders.boolQuery().should((QueryBuilders.rangeQuery("liveBeginTime").gte(date)))
.should(QueryBuilders.termQuery("isReserve", 1))))))
);
sourceBuilder.query(boolQueryBuilder);效果如下
{"from":0,"size":4,"query":{"bool":{"must":[{"bool":{"must":[{"bool":{"should":[{"wildcard":{"title.keyword":{"wildcard":"2023","case_insensitive":true,"boost":5.0}}},{"wildcard":{"title.keyword":{"wildcard":"*2023*","case_insensitive":true,"boost":1.0}}}],"adjust_pure_negative":true,"boost":1.0}},{"bool":{"should":[{"bool":{"must":[{"term":{"historyIsDelete":{"value":false,"boost":1.0}}},{"term":{"typeId":{"value":"1","boost":1.0}}},{"term":{"playBackRecording":{"value":1,"boost":1.0}}},{"range":{"saveRecordingTime":{"from":1676451404,"to":null,"include_lower":true,"include_upper":true,"boost":1.0}}},{"term":{"transcodingStatus":{"value":1,"boost":1.0}}}],"adjust_pure_negative":true,"boost":1.0}},{"bool":{"must":[{"term":{"channelIsDelete":{"value":false,"boost":1.0}}},{"bool":{"should":[{"range":{"liveBeginTime":{"from":"2023-02-15T08:56:44.723Z","to":null,"include_lower":true,"include_upper":true,"boost":1.0}}},{"term":{"isReserve":{"value":1,"boost":1.0}}}],"adjust_pure_negative":true,"boost":1.0}}],"adjust_pure_negative":true,"boost":1.0}}],"adjust_pure_negative":true,"boost":1.0}}],"adjust_pure_negative":true,"boost":1.0}}],"adjust_pure_negative":true,"boost":1.0}},"sort":[{"createTime":{"order":"desc"}}]}
该文详细描述了如何使用Elasticsearch进行数据去重、排序以及设置搜索分页的过程。通过CollapseBuilder进行去重,使用SortBuilders.fieldSort进行字段排序,调整搜索结果的起始位置和每页大小以实现分页。同时,文章展示了复杂的布尔查询语法,用于构建灵活的搜索条件,包括设置查询条件的权重和忽略大小写匹配。
1万+

被折叠的 条评论
为什么被折叠?



