【发布时间】:2017-01-03 10:10:31
【问题描述】:
我有一个每次加载网站时都会运行的查询。此查询聚合了三个不同的术语字段和大约 300 万个文档,因此需要 6-7 秒才能完成。数据不会那么频繁地更改,结果的当前性并不重要。
我知道我可以使用别名来创建类似于 RDMS 世界中的“视图”。是否也可以填充它,以便查询结果被缓存?在这种情况下,缓存是否有任何其他帮助,或者我是否必须为聚合数据创建一个额外的索引并不时更新它?
【问题讨论】:
-
聚合 300 万个文档并不是很多。所以很高兴知道为什么运行您的查询需要 6-7 秒并可能首先对其进行优化。
-
好的,我该怎么做?我启用了慢日志,但你没有给我太多信息。查询很简单,对三个字段执行
aggs,如下所示:"aggFieldName": { "terms": { "field": "myField", "size": 0 } }, -
首先您可以在查询中使用
explain=true以获得一些见解。然后你也可以使用Profile API 来分析你的聚合 -
好的,我试试这个,看看能不能有所收获。
标签: elasticsearch elasticsearch-5