Elasticsearch - сопоставление шаблона на основе значения поля - PullRequest
0 голосов
/ 20 сентября 2018

Представьте себе этот документ:

{
    "_index": "project.datasync.20180101",
    "_type": "com.redhat.viaq.common",
    "service": "data-sync-server",
    "data": {
        "foo":"bar"
    }
    ...
}

Я хотел бы иметь отображение для поля "data.foo" (представьте, что мне нужны некоторые изменения в том, как оно проиндексировано и т. Д.)

Iзнаю, что я могу сопоставить индексы следующим образом:

{
    "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, и в этом случае я хотел бы уточнить это.

Обратите внимание, что документы отправляются в ElasticSearch с Fluentd. У меня нет доступа к конфигурации Fluentd для изменения имени индексаесть.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...