我有一个带有200+
索引的弹性搜索。文档有时包含长文本字段,这些文本字段无用并且占用太多索引功能。
我想为所有索引中的所有字段自动设置ignore_above
的限制。
我正在尝试为此使用index templates。
我找到了一些示例,该示例说明了如何通过名称为特定字段设置它。
如何将其应用于所有(当前和将来)索引和字段?
答案 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