我们目前正在使用 ElasticSearch 6.7,并且有大量数据使一些请求花费了太多时间。 为了避免这个问题,我们想在我们对 elasticsearch 的研究中设置分页。问题是我无法将 ES 提出的一种分页方法放在已经存在的不同请求上。 例如,此请求包含不同的聚合和查询: https://github.com/trackit/trackit/blob/master/usageReports/lambda/es_request_constructor.go#L61-L75 此外,在收集信息后对结果进行排序。
我尝试设置 Search After 方法以及使用 from
和 size
的分页形式。
滚动不适用于聚合,复合聚合不接受查询。
那么,在 ElasticSearch 中结合其他请求类型进行分页有什么好的方法以及如何使用上面的示例进行分页?
最佳答案
composite aggregation doesn't accept query
它确实接受查询。在下面的示例中,结果是根据 play_name 过滤的。聚合仅应用于查询结果,并且可以使用 after
选项对其进行分页。
{
"query": {
"term": {
"play_name": "A Winters Tale"
}
},
"size": 0,
"aggs": {
"speaker": {
"composite": {
"after": {
"product": "FLORIZEL"
},
"sources": [
{
"product": {
"terms": {
"field": "speaker"
}
}
}
]
},
"aggs": {
"speech_number": {
"terms": {
"field": "speech_number"
},
"aggs": {
"line_id": {
"terms": {
"field": "line_id"
}
}
}
}
}
}
}
}
关于go - ElasticSearch 上特定搜索类型的分页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57521252/