首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Elasticsearch-单一指数与多指标

Elasticsearch-单一指数与多指标
EN

Stack Overflow用户
提问于 2019-01-15 11:05:54
回答 1查看 2.2K关注 0票数 1

我的索引中有4000多个不同的字段。随着时间的推移,这个数字会越来越大。由于Elasticsearch给出了每个索引的默认限制为1000个字段。一定有什么原因。

现在,我认为我不应该增加Elasticsearch设定的限制。因此,我应该将我的单个大索引分解为多个小索引。

在转到多个索引之前,我有以下几个问题:

  1. 小型多个指数的数目最多可增加50个。那么,一次搜索所有50个索引会减慢搜索时间,而不是对单个大索引进行搜索吗?
  2. 因为有大量的字段,真的需要将我的单个大索引分解成多个索引吗?
  3. 当我使用小型多个索引时,碎片总数将急剧增加(超过250个碎片)。每个索引都有5个碎片(默认编号,我不想更改)。对这些多个索引的搜索将是一次在这250个碎片上搜索。这会影响我的搜索性能吗?注意:这些碎片也可能在时间上增加。当我使用只包含5个碎片和大量文档的单个大索引时,这难道不是这5个碎片的过载吗?
EN

回答 1

Stack Overflow用户

发布于 2019-01-16 08:24:39

  1. 这在很大程度上取决于您的基础设施。如果运行具有50个碎片的单个节点,则查询运行的时间将比只有1个碎片的节点长。如果有50个节点每个包含一个碎片,那么它的运行速度很可能比一个有一个碎片的节点快(如果您有一个大数据集)。最后,您必须使用实际数据进行测试才能确定。
  2. 当有大量的字段时,ES会出现性能问题,并且更有可能出现错误。主要问题是每个字段都必须存储在集群状态中,这会给主节点带来代价。而且,在很多情况下,您必须处理大量稀疏数据(90%的字段为空)。
  3. 根据经验,一个碎片应该包含30 GB到50 GB的数据。我不会太担心在用例中重载碎片。相反的是事实。

我建议用更少的碎片来测试你的用例,把你的索引降到一个碎片,一个副本。与您的小数据集相比,搜索多个碎片(5个主碎片,由副本乘以),然后再次组合结果的开销是巨大的。

请记住,document_type行为发生了变化,并将发生进一步的变化。由于6.X每个索引只能有一个document_type,从7.X开始的document_type将被完全删除。当API在_doc上监听时,_doc是建议在6.X中使用的document_type。要么移动到每个_type一个索引,要么引入一个新的字段来存储您的类型,如果您需要在一个索引中存储数据。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54197634

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档