我正在学习弹性搜索,而且还有很多我没有得到的,但有一点我无法弄清楚(或者发现那么多)是何时使用一个索引,何时使用更多。部分原因是我绝对不知道弹性搜索索引是。
您能解释一下弹性搜索索引是什么,以及何时应该只使用一个数据,以及何时将数据拆分为多个索引?
奖励积分/或者,我如何判断何时需要将数据拆分为多个索引,然后,我该如何决定如何在新索引中拆分数据?
答案 0 :(得分:14)
您可以将其视为SQL数据库中的Schema。
架构可以有很多表。索引可以有多种类型。
很酷的是,可以在一个请求中对多个索引进行搜索。
如果没有关于用例的任何信息,很难告诉你更多信息。 这取决于很多因素:您是否需要在一段时间后删除一些数据(比方说每年)?您将索引多少个文档以及文档的大小?
例如,假设您要对日志进行索引并保持3个月的日志。您基本上每月创建一个索引,并在当前3个月之上创建一个别名。
当一个月结束时,为新月创建新索引,修改别名并删除旧索引。删除索引是有效的性能和磁盘空间明智的!
所以基本上在这种情况下我建议使用多个索引。
想象一下另一种情况。假设你正在推出一款游戏而你并不确切知道你是否会成功。因此,从仅包含一个分片的index1开始,并在其上创建别名索引。你启动游戏后发现随着响应时间的急剧增加,你将需要更多的电量(更多机器)。使用两个分片创建一个新索引index2,并将其添加到别名索引中。
通过这种方式,您可以轻松扩展。
这里的关键点是恕我直言别名。从项目开始使用别名进行搜索。它将来会对你有所帮助。
另一个用例可能是您正在为不同的客户工作。客户不希望将他们的数据与其他客户混在一起。那么在这种情况下你可能需要为每个客户创建一个索引吗?
事实上,elasticsearch非常灵活,可以帮助您根据需要设计架构。
希望这有帮助。
答案 1 :(得分:1)
elasticsearch
中最大的单个数据单位是index
。索引是elasticsearch中文档的逻辑和物理分区。
Elasticsearch indexes
与关系世界中的database
抽象最相似。 elasticsearch index
是单个正在运行的服务器实例中的完全分区的Universe。文档和类型映射的范围是index
,因此可以安全地在indexes
中重复使用名称和ID。索引还有自己的 群集复制,分片,自定义文本分析 设置以及许多其他问题。
答案 2 :(得分:0)
Index是ElasticSearch的主要数据存储单元。
有几种类型的数据存储技术:
<强>分区强>: 假设你有一个不断增长和不断增长的指数。 (即fb / twitter数据或任何类型的日志记录)。将这些类型的数据分区数据存储到多个索引中的最佳方法。常见的方法是使用时间间隔。时间间隔可能不同。它可以是每月,每周,每天。然后,当您获得新数据时,请检查时间戳并移至相应的索引。
无分区: 如果您的索引增长速度不快,则可以使用单个索引。这对小表很有用。
在探索弹性搜索时,您可以通过多种方式管理数据。