используйте подстановочный знак в псевдонимах шаблонов индекса ElasticSearch

#elasticsearch

#elasticsearch

Вопрос:

Это мой шаблон индекса (упрощенный):

 {
  "template": "user-*",
  "mappings" : {
    "ESHOP_USER" : {
      "properties" : {
        "id" : {
          "type" : "long"
        },
        "nickname" : {
          "type" : "text"
        },
        "createTime" : {
          "type" : "keyword"
        },
        "updateTime" : {
          "type" : "keyword"
        }
      }
    }
  },
  "aliases" : {
      "user-test-alias" : {
          "index" : "user-test*"
      },
      "user-prod-alias" : {
          "index" : "user-prod*"
      }
  }
}
  

Что я хочу сделать:

Индексы с шаблоном имен user-* используют один и тот же шаблон, и я хочу добавить user-test-alias ко всем индексам шаблон имен user-test* и user-prod-alias ко всем индексам шаблон имен user-prod* .

Что я получил:

С помощью приведенного выше шаблона я получил все индексы с шаблоном имен, user-* получив два псевдонима: user-test-alias и user-prod-alias .

Я знал, что если я разделю этот шаблон на шаблоны тестирования и prod или использую POST /_aliases после создания индексов, я смогу решить проблему. Но есть ли какой-то способ достичь моей цели только с одним шаблоном индекса?

Ответ №1:

Что я бы сделал, так это использовал 3 шаблона:

  • тот, который является общим для обеих сред
  • один для теста (только для псевдонима)
  • один для prod (также только для псевдонима)

Первый шаблон (общий), примененный первым:

 {
  "template": "user-*",
  "order": 0,
  "mappings" : {
    "ESHOP_USER" : {
      "properties" : {
        "id" : {
          "type" : "long"
        },
        "nickname" : {
          "type" : "text"
        },
        "createTime" : {
          "type" : "keyword"
        },
        "updateTime" : {
          "type" : "keyword"
        }
      }
    }
  }
}
  

Второй шаблон (тестовый псевдоним) применяется следующим:

 {
  "template": "user-test-*",
  "order": 1,
  "aliases" : {
      "user-test-alias" : {
          "index" : "user-test*"
      }
  }
}
  

Третий шаблон (псевдоним prod) применяется следующим:

 {
  "template": "user-prod-*",
  "order": 1,
  "aliases" : {
      "user-prod-alias" : {
          "index" : "user-prod*"
      }
  }
}