2017-01-03 52 views
5

我有一个查询,每次运行一个网站时加载。该查询汇总了三个不同的术语字段和大约300万个文档,因此需要6-7秒才能完成。数据不会频繁改变,结果的当前性也不是关键。东西“物化视图” - 像ElasticSearch

我知道我可以使用别名来创建类似于RDMS世界的“视图”。是否也可以填充它,以便查询结果被缓存?在这种情况下,有没有其他方式缓存可能会有帮助,还是需要为聚合数据创建附加索引并不时进行更新?

+0

汇总300万份文档并不是很多。所以很高兴知道为什么需要6-7秒来运行您的查询并可能首先进行优化。 – Val

+0

好的,我该怎么做?我启用了缓慢日志,但是你没有给我太多的信息。这个查询非常简单,为这样的三个字段执行'aggs':''aggFieldName“:{”terms“:{”field“:”myField“,”size“:0}},' – nik

+1

首先,您可以使用'在你的查询中解释= true'来获得一些见解。然后,您还可以使用[Profile API](https://www.elastic.co/guide/en/elasticsearch/reference/current/_profiling_aggregations.html)来对您的聚合进行分析 – Val

回答

-1

您创建物化视图。它最终具有聚合函数数据。由于您已经插入了汇总数据,现在当您查询它时,它会更快。我觉得没有必要缓存。即使我创建了MV,它也极大地提高了性能。话虽如此,你甚至可以去寻找弹性搜索,如果你的数据频繁变化,你可以缓存聚合查询。我觉得MV和弹性搜索提供了相同的性能。