Как создать индекс mutlitype в Elasticsearch?

#elasticsearch #elasticsearch-6

#elasticsearch #elasticsearch-6

Вопрос:

На нескольких страницах в документации Elasticsearch упоминается, как запрашивать индекс нескольких типов. Но мне не удалось создать его с самого начала.

Вот мой минимальный пример (на сервере Elasticsearch 6.x):

 PUT /myindex
{
  "settings" : {
    "number_of_shards" : 1
  }
}

PUT /myindex/people/123
{
  "first name": "John",
  "last name": "Doe"
}

PUT /myindex/dog/456
{
  "name": "Rex"
}
 

Создание индекса и вставка fist прошли успешно, но при попытке вставки типа dog:

 {
  "error": {
    "root_cause": [
      {
        "type": "illegal_argument_exception",
        "reason": "Rejecting mapping update to [myindex] as the final mapping would have more than 1 type: [people, dog]"
      }
    ],
    "type": "illegal_argument_exception",
    "reason": "Rejecting mapping update to [myindex] as the final mapping would have more than 1 type: [people, dog]"
  },
  "status": 400
}
 

Но это именно то, что я пытаюсь сделать, приятель! Наличие «более 1 типа» в моем индексе.

Знаете ли вы, что я должен изменить в своих вызовах, чтобы добиться этого?

Большое спасибо.

Комментарии:

1. Начиная с версии 6.0.0, несколько типов сопоставления не поддерживаются. elastic.co/guide/en/elasticsearch/reference/6.0 /…

2. Просто и понятно, спасибо. Я предлагаю вам поместить это в качестве ответа для будущих поисков.

Ответ №1:

Начиная с версии Elastic 6.0.0, несколько типов сопоставления не поддерживаются. Подробности см. в разделе Основные изменения.

Вы все равно можете эффективно использовать несколько типов, реализовав собственное настраиваемое поле типа.

Например:

 {
    "mappings": {
        "doc": {
            "properties": {
                "type": {
                    "type": "keyword"
                },
                "first_name": {
                    "type": "text"
                },
                "last_name": {
                    "type": "text"
                }

            }
        }
    }
}
 

Это описано в разделе удаление типов.