【问题标题】:Is there any performance benefit to creating an index mapping for Elasticsearch为 Elasticsearch 创建索引映射是否有任何性能优势
【发布时间】:2021-05-14 04:05:55
【问题描述】:

我想知道对于那些大规模使用 Elasticsearch 的人来说,如果我创建索引映射然后将文档放入其中,与不创建映射并直接放入文档相比,搜索时是否会带来性能优势

【问题讨论】:

    标签: elasticsearch elastic-stack elasticsearch-5


    【解决方案1】:

    如果可能,通常首选为索引创建显式映射。

    对于搜索案例,这对于使用为搜索策略提供服务所需的分析链索引数据至关重要。

    对于日志用例,可能无法知道将被摄取的日志记录的显式映射应该是什么,因为数据中可能存在事先不知道的动态字段。 Dynamic templates 可以在这里提供帮助,采用统一的日志记录结构(如 Elastic Common Schema (ECS))也可以提供帮助,在记录时将数据转换为 ECS 格式,或者在使用 ingest pipelines 摄取到 Elasticsearch 时转换为@

    【讨论】:

    • 好吧,tbh 索引很容易,但我的用例需要我每隔几个月左右向映射添加新字段一段时间。我没有找到用 Python 或其他方式做这件事的好资源。我不确定这是否涉及重新索引整个事物或什么。
    • 其实看起来还不够努力。 elasticsearch-py.readthedocs.io/en/v7.12.1/… 上有一些很好的文档
    • 请记住,更新映射通常只是附加的,即添加新字段,而不是更改现有字段
    • 是的,目前主要是这样。也许会有一种情况,我需要更改旧字段的数据类型,我认为这就是我认为重新索引的地方。我必须创建一个具有相同字段名称但可能具有不同数据类型的新映射,并使用重新索引来传输所有数据。如果我错了,请纠正我
    • 好的,所以我实际上结束了基准测试,但在搜索时我没有看到任何性能优势。我想好处是我们可以指定我们想要的棘手领域。但假设它只是一个字段 TEXT 手动映射与动态映射没有性能优势。
    【解决方案2】:

    是的,在放置文档之前使用显式映射总是比依赖动态映射更好。如果您完全依赖于动态映射,您可能无法对少数数据类型(如文本)进行可视化。而且,当您维护映射时,您的索引将始终具有相同类型的数据。请参考这篇博客:

    [https://qbox.io/blog/maximize-guide-elasticsearch-indexing-performance-part-1/][1]

    【讨论】:

      猜你喜欢
      • 2020-09-23
      • 1970-01-01
      • 1970-01-01
      • 2017-03-04
      • 2011-12-18
      • 1970-01-01
      • 2014-04-15
      • 1970-01-01
      • 2015-10-18
      相关资源
      最近更新 更多