从索引中排除 Elasticsearch 字段

发布于:2025-05-14 ⋅ 阅读:(11) ⋅ 点赞:(0)

作者:来自 Elastic Kofi Bartlett

说明如何配置 Elasticsearch 排除字段、为什么要这样做,以及应遵循的最佳实践。

更多阅读:Elasticsearch:inverted index,doc_values 及 source

想获得 Elastic 认证?了解下一次 Elasticsearch Engineer 培训的时间!

Elasticsearch 拥有大量新功能,可以帮助你为自己的使用场景构建最佳搜索解决方案。查看我们的示例笔记本以了解更多内容,开始免费云端试用,或立即在本地机器上尝试 Elastic。


在 Elasticsearch 中,索引是指以一种便于搜索的方式存储和组织数据的过程。虽然在某些情况下将文档中的所有字段建立索引是有用的,但有时你可能希望排除某些字段不被索引。这可以帮助提升性能、降低存储成本,并减少 Elasticsearch 索引的总体大小。

本文将讨论排除字段索引的原因、如何配置 Elasticsearch 排除特定字段,以及在这样做时应遵循的一些最佳实践。

排除字段索引的原因

  • 性能:为文档中的所有字段建立索引会增加索引时间并降低搜索性能。通过排除不需要用于搜索或聚合的字段,可以提升 Elasticsearch 集群的整体性能。

  • 存储:字段索引会占用存储空间。排除不需要用于搜索或聚合的字段,可以减少 Elasticsearch 集群的存储需求。

  • 索引大小:Elasticsearch 索引的大小与被索引的字段数量直接相关。通过排除不必要的字段,可以最小化索引大小,从而加快搜索和索引的速度。

配置 Elasticsearch 排除字段

要在 Elasticsearch 中排除某个字段不被索引,可以在该字段的 mapping 中使用 index 属性。将 index 属性设置为 false,Elasticsearch 将不会索引该字段,该字段也无法被搜索或用于聚合。

以下是使用 Elasticsearch mapping 排除字段索引的示例:

PUT /my_index
{
  "mappings": {
    "properties": {
      "field_to_exclude": {
        "type": "text",
        "index": false
      }
    }
  }
}

在这个示例中,我们创建了一个名为 “my_index” 的新索引,并包含一个名为 “field_to_exclude” 的字段。通过将 “index” 属性设置为 “false”,我们告诉 Elasticsearch 不对该字段建立索引。不过,该字段仍会保留在源文档中。

排除字段索引的最佳实践

  • 分析你的数据:在排除字段索引之前,必须分析你的数据,并了解哪些字段对于搜索和聚合是必要的。这有助于你做出明智的排除决策。

  • 测试你的更改:在排除字段索引时,必须测试你的更改,以确保搜索和聚合功能仍能正常工作。这可以帮助你避免意外问题或性能问题。

  • 监控性能:排除字段索引后,监控 Elasticsearch 集群的性能,确保你的更改产生了预期的效果。这有助于你发现是否还需要其他优化。

  • 使用 source filtering:如果你需要在 Elasticsearch 中存储某个字段,但不希望它可以搜索或用于聚合,可以考虑使用 source filtering。这样可以将字段保存在 _source 中,但不建立索引。

结论

在 Elasticsearch 中排除字段索引可以帮助提高性能、减少存储成本,并最小化索引的总体大小。通过仔细分析数据并了解哪些字段对于搜索和聚合是必要的,你可以做出明智的排除决策。始终测试更改并监控 Elasticsearch 集群的性能,以确保优化达到预期效果。

原文:Excluding Elasticsearch fields from indexing - Elasticsearch Labs


网站公告

今日签到

点亮在社区的每一天
去签到