[英]Spring elasticsearch - retrieve document which has largest value in a field
我正在尋找一種優雅的方法來檢索在他的特定領域具有最大價值的文檔。 例如,我要檢索具有最大時間戳的文檔。 我已經嘗試過使用聚合,但是我無法使其正常運行,它只會返回一個字段。 我也考慮過使用排序和獲取第一個元素,但是我發現這有點蠻力。 這樣的查詢將類似於:
SearchQuery searchQuery = new NativeSearchQueryBuilder()
.withPageable(new PageRequest(0, 1))
.withSort(SortBuilders.fieldSort(FIELD_TIMESTAMP)
.order(SortOrder.DESC))
.build();
有沒有更好的方法來完成這樣的任務?
您可以使用SearchResponse的size()方法獲取響應最高的文檔。
對於您的查詢,應該是這樣的:
FieldSortBuilder timestampSort = SortBuilders.fieldSort(FIELD_TIMESTAMP).order(SortOrder.DESC);
SearchResponse response = client.prepareSearch(index)
.addSort(timestampSort)
.setSize(1)
.execute()
.actionGet();
上面的查詢將僅返回一個文檔,即:查詢響應中的第一個文檔。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.