我有一个索引,其中映射会发生巨大变化。例如,考虑我正在索引其他所有文章的维基百科print_r()
数据。信息框中的数据不是结构化的,也不是统一的。因此,数据可以是以下形式: -
infobox
由于所有字段都不同,我想在相关字段上应用“完成”字段,因此我正在考虑在所有字段上应用分析器。
如何在索引时默认在每个字段上应用分析器?
答案 0 :(得分:0)
您的索引需要_default_
模板,因此无论何时添加新字段,这些string
字段都会从_default_
模板中获取映射:
{
"template": "infobox*",
"mappings": {
"_default_": {
"dynamic_templates": [
{
"string_fields": {
"match": "*",
"match_mapping_type": "string",
"mapping": {
"type": "string",
"index": "analyzed",
"analyzer": "my_completion_analyzer",
"fielddata": {
"format": "disabled"
},
"fields": {
"raw": {
"type": "string",
"index": "not_analyzed",
"ignore_above": 256
}
}
}
}
}
]
}
}
}
或者如果您的索引不是每日/每周索引,您只需创建一次并定义_default_
映射:
PUT /infobox
{
"mappings": {
"_default_": {
"dynamic_templates": [
{
"string_fields": {
"match": "*",
"match_mapping_type": "string",
"mapping": {
"type": "string",
"index": "analyzed",
"analyzer": "my_completion_analyzer",
"fielddata": {
"format": "disabled"
},
"fields": {
"raw": {
"type": "string",
"index": "not_analyzed",
"ignore_above": 256
}
}
}
}
}
]
}
}
}