版权声明:fromZjy QQ1045152332 https://blog.csdn.net/qq_36762677/article/details/88891153
感谢:
https://blog.csdn.net/u012270682/article/details/80165836
查询空字段参考
https://blog.csdn.net/zhang862520682/article/details/80333196
过滤
需求: 如果aaa字段不存在,则使用bbb字段
aaa<=结果<=bbbb
{
"from": 0,
"size": 10,
"query": {
"bool": {
"filter": [
{
{
"script" : { 通过脚本过滤
"script" : {
"inline" : "if(doc['aaa'].empty==true){if(doc['bbbbb'].value>=97.0){return doc['bbbbb'].value;}}else{if(doc['aaa'].value>=97.0){return doc['aaa'].value;}}",
"lang" : "painless"
},
"boost" : 1.0
}
},
{
"script" : {
"script" : {
"inline" : "if(doc['aaa'].empty==true){if(doc['qc_score'].value<=99.0){return doc['bbbbb'].value;}}else{if(doc['aaa'].value<=99.0){return doc['aaa'].value;}}",
"lang" : "painless"
},
"boost" : 1.0
}
},
"boost": 1
}
},
{
"range": { 普通range过滤
"bbbbb": {
"from": 1,
"to": 100,
"include_lower": true,
"include_upper": true,
"boost": 1
}
}
}
],
"disable_coord": false,
"adjust_pure_negative": true,
"boost": 1
}
},
"ext": { }
}
java代码
Script script =new Script("if(doc['qc_review_score'].empty==true){" +
"if(doc['qc_score'].value<="+getScoreMax()+"){" +
"return doc['qc_score'].value;}" +
"}else{" +
"if(doc['qc_review_score'].value<="+getScoreMax()+"){"+
"return doc['qc_review_score'].value;}" +
"}");//脚本文件名称,脚本类型
//创建scriptquery
ScriptQueryBuilder filterBuilder = QueryBuilders.scriptQuery(script);
parentQuery.filter(filterBuilder);
排序
{
"sort": [
{
"_script": {
"script": {
"inline": "doc['qc_review_score'].empty==true? doc['qc_score'].value:doc['qc_review_score'].value",
"lang": "painless"
},
"type": "number",
"order": "asc"
}
},
{
"unique_id": {
"order": "desc"
}
}
],
"ext": { }
}
java代码
Script script = new Script("doc['qc_review_score'].empty==true? doc['qc_score'].value:doc['qc_review_score'].value");
sortBuilder = SortBuilders.scriptSort(script,ScriptSortBuilder.ScriptSortType.NUMBER).order(orderType==0?SortOrder.ASC:SortOrder.DESC);
searchSourceBuilder.sort(sortBuilder);