使用BoolQueryBuilder
BoolQueryBuilder queryBuilder = QueryBuilders.boolQuery();
queryBuilder.should(QueryBuilders.matchQuery("appNameText", keyword));
queryBuilder.should(QueryBuilders.matchQuery("appIntroText", keyword));
sourceBuilder.query(queryBuilder);
会报错,因为查询语句会多出"type" : "boolean"
结果展示
{
"query" : {
"bool" : {
"should" : [ {
"match" : {
"appNameText" : {
"query" : "调查",
"type" : "boolean"
}
}
}, {
"match" : {
"appIntroText" : {
"query" : "调查",
"type" : "boolean"
}
}
} ]
}
}
}
解决方案,加上.type(null)把type去除
BoolQueryBuilder queryBuilder = QueryBuilders.boolQuery();
queryBuilder.should(QueryBuilders.matchQuery("appNameText", keyword).type(null));
queryBuilder.should(QueryBuilders.matchQuery("appIntroText", keyword).type(null));
sourceBuilder.query(queryBuilder);
结果展示
{
"query" : {
"bool" : {
"should" : [ {
"match" : {
"appNameText" : {
"query" : "调查"
}
}
}, {
"match" : {
"appIntroText" : {
"query" : "调查"
}
}
} ]
}
}
}