ElasticSearch中的“物化视图”

时间:2017-01-03 10:10:32

标签: elasticsearch elasticsearch-5

我有一个查询,每次加载网站时都会运行。此查询聚合了三个不同的术语字段和大约300万个文档,因此需要6-7秒才能完成。数据不会频繁改变,结果的当前性并不重要。

我知道我可以使用别名在RDMS世界中创建“View”。是否也可以填充它,因此查询结果会被缓存?在这种情况下,缓存是否有任何其他方式可能有所帮助,或者我是否必须为聚合数据创建其他索引并不时更新?

2 个答案:

答案 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和弹性搜索可以提供相同的性能。

相关问题