具体脚本语法请自行搜索“Groovy”语法。
{ "from" : 0, "size" : 5, "query" : { "bool" : { "filter" : { "terms" : { "id" : [ "33009", "30025", "20281", "16221", "103859", "102738" ] } } } }, "sort" : [ { "_script" : { "script" : { "inline" : "def boolean bo1 = false;def boolean bo2 = false;def zhenghoumc = doc['binganList.zhenghoumc.raw'];def yongyao=doc['binganList.zhenciList.zhongyaozlList.zhongyaozcList.danweiymc.raw'];for(i in 0..<yongyao.size()){if(yongyao[i]!=''){bo1=true;break}};for(i in 0..<zhenghoumc.size()){if(zhenghoumc[i]!=''){bo2=true;break}};bo2==false&&bo1==false?0:(bo2==false&&bo1==true?1:(bo1==true&&bo2==true?10:9))" }, "type" : "number", "order" : "desc" } } ] }
boolQuery.filter(QueryBuilders.termsQuery("id", list));
SearchRequestBuilder builder = this.client.prepareSearch("cmhealth1");
builder.setTypes("docase");
builder.setQuery(boolQuery);
// SortBuilder aa = SortBuilders.fieldSort("yongyao").;
// Script aa = new ScriptSortBuilder("''==doc['source'].value?0:1","number").order(SortOrder.ASC);
Script script=new Script("def boolean bo1 = false;def boolean bo2 = false;"
+ "def zhenghoumc = doc['binganList.zhenghoumc.raw'];"
+ "def yongyao=doc['binganList.zhenciList.zhongyaozlList.zhongyaozcList.danweiymc.raw'];"
+ "for(i in 0..<yongyao.size()){if(yongyao[i]!=''){bo1=true;break}};"
+ "for(i in 0..<zhenghoumc.size()){if(zhenghoumc[i]!=''){bo2=true;break}};"
+ "bo2==false&&bo1==false?0:(bo2==false&&bo1==true?1:(bo1==true&&bo2==true?10:9))");
ScriptSortBuilder scriptSortBuilder = SortBuilders.scriptSort(script, "number").order(SortOrder.DESC);
// builder.addSort("binganList.zhenghoumc", SortOrder.DESC);
builder.addSort(scriptSortBuilder);
builder.setFrom(pageNum);
builder.setSize(pageSize);
SearchResponse response = builder.get();
善于将复杂问题简单化
浙公网安备 33010602011771号