Elasticsearch聚合:如何对存储桶顺序进行排序

ES版本:1.5(Amazon Elasticsearch

我的目标:在某个字段上具有重复数据删除功能的搜索结果。我目前正在对聚合进行一些研究,以解决重复数据删除问题。因此,我的结果是一个带有1个大小的存储桶的列表存储桶。但是,我找不到订购存储桶列表的方法。

当前查询:

curl -XGET "http://localhost:9200/myidx/product/_search?search_type=count" -d '{

"size": 2,

"query": {

"function_score": {

"field_value_factor": {

"field": "relevance",

"factor": 2.0

},

"query": { "term": { "title": "abcd" } },

"score_mode": "multiply",

"boost_mode": "multiply"

}

},

"aggs": {

"unique": {

"terms": {

"field": "groupid",

"size": 2

},

"aggs": {

"sample": {

"top_hits": {

"size": 1

}

}

}

}

}

}'

结果:

{ ...

"aggregations": {

"unique": {

"doc_count_error_upper_bound": 1,

"sum_other_doc_count": 39,

"buckets": [

{

"key": 717878424,

"doc_count": 14,

"sample": {

"hits": {

"total": 14,

"max_score": 45.856163,

"hits": [

{

"_index": "myidx",

"_type": "product",

"_id": "89531",

"_score": 45.856163,

"_source": { ... }

}

]

}

}

},

{

"key": 717878423,

"doc_count": 8,

"sample": {

"hits": {

"total": 8,

"max_score": 68.78424,

"hits": [

{

"_index": "myidx",

"_type": "product",

"_id": "89517",

"_score": 68.78424,

"_source": { ... }

}

]

}

}

}

]

}

}

}

我想看到第二个存储桶,其中max_score = 68.78424为第一个。这可能吗?

如果不建议使用聚合,请告知。

回答:

是的,您可以通过在最大文档分数上添加另一个子聚合并按uniqueterms该分数对聚合进行排序来实现。

curl -XGET "http://localhost:9200/myidx/product/_search?search_type=count" -d '{

"size": 2,

"query": {

"function_score": {

"field_value_factor": {

"field": "relevance",

"factor": 2.0

},

"query": { "term": { "title": "abcd" } },

"score_mode": "multiply",

"boost_mode": "multiply"

}

},

"aggs": {

"unique": {

"terms": {

"field": "groupid",

"size": 2,

"order": {

"max_score": "desc"

}

},

"aggs": {

"max_score": {

"max": {

"script": "doc.score"

}

},

"sample": {

"top_hits": {

"size": 1

}

}

}

}

}

}'

以上是 Elasticsearch聚合:如何对存储桶顺序进行排序 的全部内容, 来源链接: utcz.com/qa/425453.html

回到顶部