从索引中排除 Elasticsearch 字段
了解如何配置 Elasticsearch 以排除字段、从索引中排除字段的主要原因以及应遵循的最佳实践。
Check out the different ways to ingest data into Elasticsearch and dive into practical examples to try something new.
Elasticsearch is packed with new features to help you build the best search solutions for your use case. Start a free cloud trial or try Elastic on your local machine now.
在 Elasticsearch 中,索引是指以易于搜索的方式存储和组织数据的过程。虽然索引文档中的所有字段在某些情况下都很有用,但在某些情况下,您可能希望将某些字段排除在索引之外。这有助于提高性能,降低存储成本,并最大限度地减少 Elasticsearch 索引的总体大小。
在本文中,我们将讨论从索引中排除字段的原因、如何配置 Elasticsearch 以排除特定字段,以及在这样做时应遵循的一些最佳实践。
将字段排除在索引之外的原因
性能: 索引文档中的所有字段会导致索引时间增加,搜索性能降低。通过排除搜索或聚合不需要的字段,可以提高 Elasticsearch 集群的整体性能。
存储空间 索引字段会消耗存储空间。排除搜索或聚合不需要的字段有助于降低 Elasticsearch 集群的存储需求。
索引大小: Elasticsearch 索引的大小与索引字段的数量直接相关。通过排除不必要的字段,可以最大限度地减少索引的大小,从而提高搜索和索引性能。
配置 Elasticsearch 以排除字段
要在 Elasticsearch 中排除对某个字段的索引,可以在字段映射中使用 "index "属性。如果将 "index "属性设置为 "false",Elasticsearch 将不会为该字段建立索引,也就无法对其进行搜索或聚合。
下面是一个如何使用 Elasticsearch 映射将字段排除在索引之外的示例:
PUT /my_index
{
"mappings": {
"properties": {
"field_to_exclude": {
"type": "text",
"index": false
}
}
}
}在本例中,我们将创建一个名为 "my_index "的新索引,其中包含一个名为 "field_to_exclude "的字段。通过将 "index "属性设置为 "false",我们告诉 Elasticsearch 不要为这个字段建立索引。但该字段仍可在源文件中使用。
从索引中排除字段的最佳做法
分析数据: 在将字段排除在索引之外之前,有必要对数据进行分析,了解哪些字段对于搜索和聚合是必要的。这将有助于您做出明智的决定,排除哪些字段。
测试更改: 在将字段排除在索引之外时,必须对更改进行测试,以确保搜索和聚合功能仍能按预期运行。这可以帮助您避免任何意外问题或性能问题。
监控性能:从索引中排除字段后,请监控 Elasticsearch 集群的性能,以确保您的更改达到了预期效果。这可以帮助您确定可能需要进行的其他优化。
使用源过滤:如果需要在 Elasticsearch 中存储一个字段,但又不想让它被搜索或用于聚合,那么可以考虑使用源过滤。这样就可以将字段存储在 _source 字段中,但将其排除在索引之外。
结论
将字段排除在 Elasticsearch 索引之外有助于提高性能、降低存储成本,并最大限度地减少索引的总体大小。通过仔细分析数据并了解哪些字段对于搜索和汇总是必要的,您就可以做出明智的决定,排除哪些字段。请始终测试您的更改并监控 Elasticsearch 集群的性能,以确保您的优化达到预期效果。




