Opensearch - 索引的最佳实践
Posted
技术标签:
【中文标题】Opensearch - 索引的最佳实践【英文标题】:Opensearch - best practice for indexing 【发布时间】:2022-01-22 21:34:08 【问题描述】:我有大约 1 TB 的旧 apache 日志数据,我想在 Opensearch 中建立索引。日志是每天的,结构如下:s3://bucket/logdata/year/year_month_day.json.gz
我计划使用 logstash 进行摄取,并想知道索引以获得性能的最佳方式? 我想每天索引,但是如何从上面的日志文件名中提取日期以在 logstash conf 文件中正确显示?
index = > "%+YYYY.MM.dd"
将解决未来的日志文件,但我如何解决旧的?
【问题讨论】:
最好从日志事件中提取日期,而不是日志文件名,事件是什么样子的? 【参考方案1】:您可以使用dissect
filter 来执行此操作,它可以解析存储桶键中的日期组件并将日期重构为一个名为log_date
的新字段:
dissect
mapping =>
"[@metadata][s3][key]" => "%ignore/logdata/%+ignore/%year_%+month_%day.json.gz"
add_field =>
"log_date" => "%year-%month-%day"
remove_field => ["ignore"]
然后在您的输出部分中,您可以引用该新字段以构建您的索引名称:
index = > "your-index-%log_date"
PS:另一种方法是将year_month_day
部分解析为一个标记,并使用mutate/gsub
将_
字符替换为-
【讨论】:
这个运气好吗?【参考方案2】:根据我的经验,每日索引可能很快就会失控:它们的大小差异很大,保留期不错的集群可能会过度分片等。我建议使用基于两个索引年龄的策略设置 ILM rollover (7 或 30 天,取决于日志记录量)和主分片大小(常用阈值为 50GB)。您还可以根据保留期限在同一策略中设置删除阶段。
这样您将获得最佳的索引和搜索性能,以及均匀的负载分布和资源使用。
【讨论】:
ILM 是 Elasticsearch 独有的东西,opensearch 没有 Opensearch 也有类似的ISM plugin以上是关于Opensearch - 索引的最佳实践的主要内容,如果未能解决你的问题,请参考以下文章