弹性搜索 - 何时使用其他索引?

时间:2013-12-18 06:11:40

标签: indexing elasticsearch

我正在学习弹性搜索,而且还有很多我没有得到的,但有一点我无法弄清楚(或者发现那么多)是何时使用一个索引,何时使用更多。部分原因是我绝对不知道弹性搜索索引

您能解释一下弹性搜索索引是什么,以及何时应该只使用一个数据,以及何时将数据拆分为多个索引?

奖励积分/或者,我如何判断何时需要将数据拆分为多个索引,然后,我该如何决定如何在新索引中拆分数据?

3 个答案:

答案 0 :(得分:14)

您可以将其视为SQL数据库中的Schema。

架构可以有很多表。索引可以有多种类型。

很酷的是,可以在一个请求中对多个索引进行搜索。

如果没有关于用例的任何信息,很难告诉你更多信息。 这取决于很多因素:您是否需要在一段时间后删除一些数据(比方说每年)?您将索引多少个文档以及文档的大小?

例如,假设您要对日志进行索引并保持3个月的日志。您基本上每月创建一个索引,并在当前3个月之上创建一个别名。

当一个月结束时,为新月创建新索引,修改别名并删除旧索引。删除索引是有效的性能和磁盘空间明智的!

所以基本上在这种情况下我建议使用多个索引。

想象一下另一种情况。假设你正在推出一款游戏而你并不确切知道你是否会成功。因此,从仅包含一个分片的index1开始,并在其上创建别名索引。你启动游戏后发现随着响应时间的急剧增加,你将需要更多的电量(更多机器)。使用两个分片创建一个新索引index2,并将其添加到别名索引中。

通过这种方式,您可以轻松扩展。

这里的关键点是恕我直言别名。从项目开始使用别名进行搜索。它将来会对你有所帮助。

另一个用例可能是您正在为不同的客户工作。客户不希望将他们的数据与其他客户混在一起。那么在这种情况下你可能需要为每个客户创建一个索引吗?

事实上,elasticsearch非常灵活,可以帮助您根据需要设计架构。

希望这有帮助。

答案 1 :(得分:1)

elasticsearch中最大的单个数据单位是index。索引是elasticsearch中文档的逻辑和物理分区。

Elasticsearch indexes与关系世界中的database抽象最相似。 elasticsearch index是单个正在运行的服务器实例中的完全分区的Universe。文档和类型映射的范围是index,因此可以安全地在indexes中重复使用名称和ID。索引还有自己的 群集复制,分片,自定义文本分析 设置以及许多其他问题。

供您参考: -   Shards and replicas in Elasticsearch

答案 2 :(得分:0)

Index是ElasticSearch的主要数据存储单元。

有几种类型的数据存储技术:

<强>分区: 假设你有一个不断增长和不断增长的指数。 (即fb / twitter数据或任何类型的日志记录)。将这些类型的数据分区数据存储到多个索引中的最佳方法。常见的方法是使用时间间隔。时间间隔可能不同。它可以是每月,每周,每天。然后,当您获得新数据时,请检查时间戳并移至相应的索引。

无分区: 如果您的索引增长速度不快,则可以使用单个索引。这对小表很有用。

在探索弹性搜索时,您可以通过多种方式管理数据。