Elasticsearch为多个索引中的所有字段设置了“ ignore_above”

时间:2019-03-19 14:29:04

标签: elasticsearch indexing mapping

我有一个带有200+索引的弹性搜索。文档有时包含长文本字段,这些文本字段无用并且占用太多索引功能。

我想为所有索引中的所有字段自动设置ignore_above的限制。 我正在尝试为此使用index templates

我找到了一些示例,该示例说明了如何通过名称为特定字段设置它。
如何将其应用于所有(当前和将来)索引和字段?

1 个答案:

答案 0 :(得分:0)

  

如何将其应用于所有(当前和将来)索引和字段?

模板中的设置仅适用于新索引。对于现有索引,您需要为各个索引更新mappings

在所有索引上应用此设置的方式因不同的Elasticsearch版本而异。我可以向您展示我尝试过的两个版本,并且知道它可以工作。

ES 2.4

    "mappings": {
    "_default_": {
        "dynamic_templates": [
            {
                "string_fields": {
                    "mapping": {
                        "ignore_above": 10922,
                        "index": "not_analyzed",
                        "type": "string"
                    },
                    "match_mapping_type": "string",
                    "match": "*"
                }
            }
        ]
        },
        "<your object type>": {
    <other settings>
    }
}

ES 6.1

"mappings": {
    "_default_" : {
        "dynamic_templates" : [
            {
                "string_fields" : {
                    "mapping" : {
                        "type" : "keyword",
                        "ignore_above" : 8191,
                        "index": true
                },
                "match_mapping_type" : "string",
                "match" : "*"
                }
            }
        ]
    }, 
    "<your object type>": {
    <other settings>
    }
}
mappings下的

_default_将适用于所有对象类型,并且可以使用<your object type>下的设置来覆盖。

HTH