【问题标题】:Limiting the nested fields in Elasticsearch限制 Elasticsearch 中的嵌套字段
【发布时间】:2020-04-16 10:46:06
【问题描述】:

我正在尝试使用动态映射在 ElasticSearch 中索引 json 文档。一些文档的键(嵌套级别)数量不可预测,因此我开始从 ES Java api 收到此错误。

[ElasticsearchException[Elasticsearch exception [type=illegal_argument_exception, reason=Limit of total fields [1000] in index [my_index] has been exceeded]]]failure in bulk execution

我想知道是否有一个可以在索引级别配置的选项,我可以在其中定义仅扫描字段直到某个级别(可能是 2)并将文档的其余部分存储为字符串或扁平形式。我确实遇到了一些设置,例如index.mapping.depth.limit,但似乎如果我将其设置为 2,如果有更多级别,此设置会拒绝文档。 link

【问题讨论】:

    标签: java elasticsearch


    【解决方案1】:

    对于总字段

    PUT <index_name>/_settings
    {
      "index.mapping.total_fields.limit": 2000
    }
    

    对于深度限制

    PUT <index_name>/_settings
    {
      "index.mapping.depth.limit": 2
    }
    

    https://www.elastic.co/guide/en/elasticsearch/reference/master/mapping.html

    【讨论】:

    • 如问题中所述遇到此问题。如果发现深度大于 2,则该文档拒绝索引文档。这是链接discuss.elastic.co/t/index-mapping-depth/145766
    • 您可以通过映射设置"dynamic": true使其允许插入,这将允许它保存所有信息,但只索引一定深度,只有这个深度才能搜索。
    • 这是在创建索引后增加限制。有没有办法更改默认设置,以便新索引自动选择更新的值?
    猜你喜欢
    • 2019-01-02
    • 2015-07-30
    • 1970-01-01
    • 1970-01-01
    • 2021-08-07
    • 2017-07-13
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多