想象一下这个文件:
{
"_index": "project.datasync.20180101",
"_type": "com.redhat.viaq.common",
"service": "data-sync-server",
"data": {
"foo":"bar"
}
...
}
我想对“ data.foo”字段进行映射(假设我需要对其索引方式进行一些更改,等等。)
我知道我可以匹配这样的索引:
{
"template" : "project.datasync.*",
"order" : 100,
"mappings": {
"data": {
"enabled": true,
"properties": {
"foo": {"type": "string", "index": "not_analyzed", ...}
}
}
}
}
但是,索引名称中的datasync
部分来自其他地方,并且不能保证它将是datasync
或与模式匹配的类似内容。
因此,如果索引为project.thedatasync.20180101
,则我的索引模板将不匹配。
我知道我可以在索引模板中使用project.*
进行匹配,但是在那种情况下,它匹配不相关的内容太笼统了。
因此,我只想在service
为data-sync-server
时启用此映射,这对于我感兴趣的文档始终是正确的。
有什么想法吗?这似乎从根本上反对ElasticSearch的工作方式,在这种情况下,我想澄清一下。
请注意,文档是通过Fluentd发送到ElasticSearch的,我无权访问Fluentd config来在那里更改索引名称。