当前位置: 首页 > 面试题库 >

elasticsearch,多个索引与一个索引和不同数据集的类型?

孟自强
2023-03-14
问题内容

我有一个使用MVC模式开发的应用程序,我现在希望为其建立多个模型的索引,这意味着每个模型具有不同的数据结构。

  • 使用多个索引(每个模型一个索引还是在每个模型的相同索引中使用一个类型)是更好的选择吗?我认为这两种方式都需要不同的搜索查询。我刚刚开始。

  • 如果数据集很小或很大,这两个概念在性能上是否存在差异?

如果有人可以为我推荐一些好的样本数据,我自己会测试第二个问题。


问题答案:

两种方法都有不同的含义。

假设您使用的是Elasticsearch的默认设置,则每个模型具有1个索引将大大增加分片的数量,因为1个索引将使用5个分片,而5个数据模型将使用25个分片;虽然在1个索引中有5种对象类型仍将使用5个分片。

将每个数据模型作为索引的含义:

  • 索引内的搜索效率高且速度快,因为每个分片中的数据量应较小,因为它已分配给不同的索引。
  • 从2个或多个索引中搜索数据模型的组合将产生开销,因为查询必须跨索引发送到更多分片,然后编译并发送回用户。
  • 如果您的数据集很小,则不建议这样做,因为在创建每个额外的分片时会占用更多的存储空间,并且性能提升很小。
  • 如果您的数据集很大并且查询需要花费很长时间,则建议使用此方法,因为专用分片将存储您的特定数据,并且Elasticsearch会更容易处理。

在索引中将每个数据模型作为对象类型的含义:

  • 更多数据将存储在索引的5个分片中,这意味着在跨不同数据模型进行查询时,开销问题较小,但分片大小会大大增加。
  • 由于有更多文档要过滤,因此分片中的更多数据将需要更长的时间供Elasticsearch搜索。
  • 如果您知道要处理1 TB的数据并且没有在Elasticsearch映射中的不同索引或多个分片中分布数据,则不建议使用。
  • 推荐用于小型数据集,因为每个分片都会占用硬件空间,因此不会浪费存储空间来提高性能。

如果您要问什么是太多数据与小数据?通常,它取决于处理器速度和硬件的RAM,用于Elasticsearch的映射中每个变量内存储的数据量以及查询要求;在查询中使用多个方面会大大降低您的响应时间。没有直接的答案,您将必须根据需要进行基准测试。



 类似资料:
  • 我有一个使用MVC模式开发的应用程序,现在我想对它的多个模型进行索引,这意味着每个模型都有不同的数据结构。 > 是使用多个索引更好,每个模型使用一个索引,还是在每个模型的同一索引中使用一个类型?我认为,这两种方法都需要不同的搜索查询。我刚开始做这个。 如果数据集是小的还是大的,这两个概念在性能上是否存在差异? 如果有人能为我推荐一些好的样本数据,我会自己测试第二个问题。

  • 最初,我认为将一个多索引对象传递给。loc可以提取出我想要的值/级别,但这是行不通的。做这样的事情最好的方法是什么?

  • 问题内容: 我在同一台Ubuntu服务器上有一个Rails 3应用程序的暂存和生产实例(使用tyre gem)。看来这两个实例都共享相同的elasticsearch索引,这显然不是我想要的。 如何使生产和登台实例使用单独的实例? 问题答案: 您需要覆盖索引名称。假设您要绑定ActiveRecord,它将根据相关模型创建索引名称。您可以使用这样的前缀来调整名称; 然后会创建一个名为的索引,以此类推。

  • 按照文档的规范示例,假设我想在elasticsearch中存储推文,但我想指定一个处理两个以上字段的endpoint,例如。 在本例中,我想在推特上建立索引,但也要在推特句柄和月份上建立索引,包括推特类型和id。 这是可能的,还是唯一可能的映射类似于他们提供的东西,一个和一个,例如?

  • 我正在尝试从多索引数据帧中仅使用一个索引来创建新的数据帧。 理想情况下,我想要这样的东西: 和: 基本上,我想删除除level之外的多索引的所有其他索引。有没有一个简单的方法可以做到这一点?

  • 我使用的是spring-data-elasticsearch,一开始一切都很好。 是否可以在运行时使用不同的索引创建存储库? 多谢了,马塞尔