是否可以获取按日期排序的文档列表,并过滤所有较早的文档?具有相同字段值的文档?
假设我有以下文档:
我希望得到以下结果(ts4> ts1,ts3> ts5):
我目前使用Java客户端(2.4.6)来实现我的需求。
以下几行表达了一个聚合,让我从源头获得前20个点击。
TopHitsBuilder lastFromSourceAggregation = AggregationBuilders
.topHits("last_from_source")
.addSort(SortBuilders.fieldSort("date").order(SortOrder.DESC))
.setFetchSource(true)
.setSize(20);
不幸的是,它还包含字段值的重复值。该值应该是唯一的。我不知道如何制作一个能满足我需要的过滤器查询。
我要求这个,因为我需要实际文档中的特定字段。因此,我不能只获得一个聚合,它给出了一组值。
Edit1:生成JSON 这是java客户端生成的内容(省略了详细的过滤器部分)。 ``
{
"by_attribute": {
<...omitted...>,
"aggregations": {
"by_source": {
"terms": {
"field": "metadata.source"
},
"aggregations": {
"last_from_source": {
"top_hits": {
"size": 20,
"_source": {
"includes": [],
"excludes": []
},
"sort": [
{
"metadata.date": {
"order": "desc"
}
}
]}}}}}}}
``