ES查询修改

This commit is contained in:
daihh
2022-10-21 18:26:01 +08:00
parent 5aca4e60eb
commit d7ae8b47b8
2 changed files with 12 additions and 6 deletions

View File

@@ -120,7 +120,8 @@ public class CourseElasticsearchImpl implements ICourseFullTextSearch{
builder.field("isSetAudience").startObject().field("type", "keyword").endObject();
builder.field("createdAt").startObject().field("type", "integer").endObject();
builder.field("openCourse").startObject().field("type", "integer").endObject();
builder.field("audience").startObject().field("type", "text").field("analyzer","comma").endObject();
//builder.field("audience").startObject().field("type", "text").field("analyzer","comma").endObject();
builder.field("audiences").startObject().field("type", "keyword").endObject();
builder.field("device").startObject().field("type", "integer").endObject();
builder.endObject();
builder.endObject();
@@ -283,26 +284,28 @@ public class CourseElasticsearchImpl implements ICourseFullTextSearch{
//加上Source判断是为了应对后台查询后台查询时不需要权限但是需要指定数据来源
if(params.getSource()==null || params.getSource()==0 ) {
//受众权限条件,必须是有受众的课程并且受众条件不为空
if(StringUtils.isNotBlank(params.getAudience())) {
if(params.getAudiences()!=null && params.getAudiences().length>0) {
//if(StringUtils.isNotBlank(params.getAudience())) {
BoolQueryBuilder audience= QueryBuilders.boolQuery();
audience.should(QueryBuilders.termQuery("isSetAudience",0));
BoolQueryBuilder has= QueryBuilders.boolQuery();
String[] ids=params.getAudience().split(",");
//String[] ids=params.getAudience().split(",");
has.must(QueryBuilders.termQuery("isSetAudience",1));
has.must(QueryBuilders.termsQuery("audience", ids));
//has.must(QueryBuilders.termsQuery("audience", ids));
has.must(QueryBuilders.termsQuery("audiences", params.getAudiences()));
audience.should(has);
audience.minimumShouldMatch(1);
boolQuery.filter(audience);
//log.error("audience="+audience.toString());
}else {
//如果当前用户无受众,只能查询未设置受众的课程
boolQuery.must(QueryBuilders.termQuery("isSetAudience",0));
}
}
//在哪端显示
if(params.getDevice()!=null) {
BoolQueryBuilder deviceQuery = QueryBuilders.boolQuery();