#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"
}
}
}
}
}
Это описано в разделе удаление типов.