Создание сопоставления для существующего индекса с новым типом в elasticsearch

Я нашел статью на сайте elasticsearch, описывающую, как "переиндексировать без простоя", но это не очень приемлемо каждый раз, когда вводится новый элемент, который должен иметь настраиваемое сопоставление (http://www.elasticsearch.org/blog/changing-mapping-with-zero-downtime/)

Кто-нибудь знает, почему я не могу создать сопоставление для существующего индекса, но новый тип в elasticsearch? Тип еще не существует, так почему бы и нет? Может быть, я что-то упустил, и это возможно? Если да, то как это может быть достигнуто?

Спасибо, Владимир

Ответ 1

Вот простой пример для создания двух типов отображения в индексе (один за другим)

Я использовал i1 как индекс и t1 и t2 как типы,

  • Создать индекс

    curl -XPUT "http://localhost:9200/i1"
  • Создать тип 1

    curl -XPUT "http://localhost:9200/i1/t1/_mapping" -d
    {
       "t1": {
          "properties": {
             "field1": {
                "type": "string"
             },
             "field2": {
                "type": "string"
             }
          }
       }
    }'
  • Создать тип 2

    curl -XPUT "localhost:9200/i1/t2/_mapping" -d'
    {
       "t2": {
          "properties": {
             "field3": {
                "type": "string"
             },
             "field4": {
                "type": "string"
             }
          }
       }
    }'

Теперь, глядя на сопоставление (curl -XGET "http://localhost:9200/i1/_mapping"), похоже, что он работает.

Надеюсь, это поможет! Спасибо

Ответ 2

Если вы используете Elasticsearch 6.0 или выше, индекс может иметь только один тип. Таким образом, вам нужно создать индекс для второго типа или создать настраиваемый тип, который будет содержать два типа.

Для получения дополнительной информации: Удаление нескольких типов в индексе