es 指定排序字段_ES里多字段分组后排序
ES里多字段分組再排序,只有兩種辦法,其他辦法都不準:
辦法一:用script
如
//主桶:設置要聚合的字段,sql
TermsBuilder one = AggregationBuilders.terms("one").script(new Script("doc['"+dbFiled+"'].value +'{#}' + doc['"+sqlFiled+"'].value"));
one.subAggregation(AggregationBuilders.max(queryTime + "Max").field(queryTime));
one.subAggregation(AggregationBuilders.min(queryTime + "Min").field(queryTime));
one.subAggregation(AggregationBuilders.avg(queryTime + "Avg").field(queryTime));
one.order(Terms.Order.aggregation(queryTime + "Max", false));
one.size(100);
//構建查詢語句
srb.addAggregation(one);
這種辦法是效率低,但靈活。不用冗余字段。
這種辦法需要配置es,如下:配置文件elasticsearch.yml
script.inline:on
script.indexd:on
配置完后重啟服務端,如果你客戶端處于連接狀態,那也要重啟。
辦法二:冗余字段
在logstash抓數據的時候,就冗余合并字段,配置略。
總結
以上是生活随笔為你收集整理的es 指定排序字段_ES里多字段分组后排序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python自带time库吗_Pytho
- 下一篇: mysql国际化_Java的Struts