Представьте себе этот документ:
{
"_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 для изменения имени индексаесть.