Elasticsearch聚合排名(按热门得分)

我想按top_hit的doc.score订购存储桶。我当前的实现如下。

  group_by_iid: {

terms: {

field: 'iid',

order: { max_score: 'desc' },

size: 0

},

aggs: {

max_score: { max: { script: 'doc.score' } },

top_hit: {

top_hits: {

sort: [{ source_priority: { order: 'desc' } }],

size: 1

}

}

}

}

这是错误的,因为存储桶是按其最高得分而不是其source_priority文档最高得分排序的。有办法解决这个问题吗?

回答:

我遇到了同样的问题,而解决问题的方法是在docs得分上引入子汇总。然后在我的外部聚合中,我按max_score聚合的名称排序。

GET /my-index/my-type/_search

{

"query": {

"bool" : {

"should" : [ {

"match" : {

"searchTerm" : {

"query" : "style",

"type" : "boolean"

}

}

},

{

"flt_field" : {

"searchTerm" : {

"like_text" : "style"

}

}

}]

}

},

"aggs": {

"group_by_target_url": {

"terms": {

"field": "targetUrl",

"order": {

"max_score": "desc"

}

},

"aggs": {

"max_score": {

"max": {

"script": "doc.score"

}

}

}

}

}

}

我遵循了此链接上的指示:

http://www.elasticsearch.org/guide/zh-

CN/elasticsearch/reference/current/search-aggregations-bucket-terms-

aggregation.html

以上是 Elasticsearch聚合排名(按热门得分) 的全部内容, 来源链接: utcz.com/qa/433211.html

回到顶部