elasticsearch - Elasticsearch - 一个索引还是多个索引?

标签 elasticsearch

我正在研究一种解决方案,用于在 Elastic Search 中为许多开发团队中的许多应用程序存储应用程序日志。每个日志条目的结构与“app”字段相同,以指示应用程序。

#1 目标是在单个“应用程序”中支持高效查询。查询所有应用程序虽然仍然很重要,但将是次要的。

我正在尝试确定什么是最好的:

编辑:在这两种情况下,我都会使用基于时间的索引。

多指标系列

每个“应用程序”都有一系列基于时间的索引(app1-2017-04-01、app1-2017-04-02 等),用户将直接针对这些较小的索引执行搜索。这里的想法是,由于索引的大小较小,也许对它们的查询速度更快?

单一指数系列

使用一个巨大的索引系列来表示所有应用程序日志(例如 logs-2017-04-01、logs-2017-04-02 等)用户将查询“app”字段以缩小搜索结果。

在这种情况下哪个更快?我很好奇额外索引的开销成本

最佳答案

在大多数情况下,多个索引更好:

  1. 搜索较小的数据集速度更快
  2. 您在映射结构方面的限制较少。如果您需要为新数据更改它,您可以保留旧数据而无需重新索引,只需为新索引放置新映射
  3. 它更具可扩展性和灵 active 。您可以将旧索引保存在不同的硬盘驱动器或不同的机器上。
  4. 如果需要,您仍然可以搜索多个索引。
  5. 索引的开销很小。如果每个索引有很多文档,则文档比索引元数据占用更多空间。如果没有,您可以花更短的时间来拆分您的日志索引

关于elasticsearch - Elasticsearch - 一个索引还是多个索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44700066/

相关文章:

Elasticsearch 使用带同义词的 shingle 过滤器

elasticsearch - 使用grok过滤Logstash中的Apache错误日志

elasticsearch - ElasticSearch-使用相同的字段名称但使用不同的分析器搜索不同的doc_types

java - ElasticSearch 中字段名称的最佳实践

node.js - 如何通过AWS lambda nodejs函数索引存储在S3中的XML文件?

node.js - mongoosastic 4.x和elasticsearch 2.2的建议者完成问题

search - 在Elasticsearch中存储任意长度的分层数据的最佳方法

elasticsearch - 如何使用另一个分析器动态更新文档条款?

amazon-web-services - 带有Lambda和S3的AWS ElasticSearch不会将文档添加到索引

elasticsearch - Elasticsearch如何搜索像@这样的字符