我有一个查询,每次加载网站时都会运行。此查询聚合了三个不同的术语字段和大约300万个文档,因此需要6-7秒才能完成。数据不会频繁改变,结果的当前性并不重要。
我知道我可以使用别名在RDMS世界中创建“View”。是否也可以填充它,因此查询结果会被缓存?在这种情况下,缓存是否有任何其他方式可能有所帮助,或者我是否必须为聚合数据创建其他索引并不时更新?
答案 0 :(得分:1)
我知道帖子很旧,但是关于视图,请在7.3.0中弹性添加数据框。 您还可以使用_reindex api
POST /_reindex
{
"source": {
"index": "live_index"
},
"dest": {
"index": "caching_index"
}
}
但这不会改变您的摄取问题。 关于这一点,我认为解决方案正在为您的索引分片。 具有2个或更多分片以及几个节点的弹性体将能够瘫痪。
但是更容易测试的是在建立索引时禁用refresh_interval并在之后重新启用它。它通常可以大大改善摄取时间。
您可以在上看到有关此用例的完整文章 https://www.elastic.co/guide/en/elasticsearch/reference/current/tune-for-indexing-speed.html
答案 1 :(得分:-2)
您可以创建物化视图。它最终会有一个包含聚合函数数据的表。由于您已经插入了聚合数据,现在当您查询它时,它会更快。我觉得没有必要缓存。即使我创建了MV,它也极大地提高了性能。话虽如此,你甚至可以进行弹性搜索,如果你的数据不经常变化,你可以缓存聚合查询。我觉得MV和弹性搜索可以提供相同的性能。