是否可以定义自定义字段类型并将该定义重用于多个字段.我正在尝试做类似模板的事情,但我不希望它动态定义.
例如,我在系统中有一些名为"keywords"的东西 - 关键字总是有一个特定的映射 -
'keywords' => [
'type' => 'object',
'properties' => [
'id' => [
'type' => 'integer'
],
'name' => [
'type' => 'string',
'position_offset_gap'=>100,
'analyzer'=>'my_keyword',
]
]
]
Run Code Online (Sandbox Code Playgroud)
我在整个系统中都有这些 - 帖子,媒体,文件夹等,我有两种非常相似的 - 让我们说关键词和类别.这是相同的定义,我只是出于商业原因将它们分开.
理想情况下,我想要做的是定义一个"关键字"类型,然后我将定义一个字段
'keywords' => [
'type' => 'keyword'
]
Run Code Online (Sandbox Code Playgroud)
或类似的东西.然后,当我想要更改该定义时,我可以在一个地方为所有使用它的字段执行此操作.
这在Elasticsearch中是否可行?我不想使用索引模板,因为我喜欢明确我的映射.
我建议您使用动态模板+关键字字段的命名约定。在实践中,例如:
(1)定义一个动态模板,将名称以 开头的任何字段映射k_
到您的自定义映射
{
"mappings": {
"_doc": {
"dynamic_templates": [
"keywords": {
"match": "k_*",
"mapping": {
"type": "keyword",
...
}
}
]
}
}
}
Run Code Online (Sandbox Code Playgroud)
(2)将前缀添加k_
到应应用自定义映射的任何字段的名称中(例如,k_post
, k_media
, ...)
当然,您可以为关键字字段选择任何其他命名约定(例如,,*_keywords
k*
...)
归档时间: |
|
查看次数: |
187 次 |
最近记录: |