Elasticsearch-基于字段值的模板匹配

时间:2018-09-20 12:11:28

标签: elasticsearch

想象一下这个文件:

{
    "_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.*进行匹配,但是在那种情况下,它匹配不相关的内容太笼统了。

因此,我只想在servicedata-sync-server时启用此映射,这对于我感兴趣的文档始终是正确的。

有什么想法吗?这似乎从根本上反对ElasticSearch的工作方式,在这种情况下,我想澄清一下。

请注意,文档是通过Fluentd发送到ElasticSearch的,我无权访问Fluentd config来在那里更改索引名称。

0 个答案:

没有答案