#elasticsearch
#elasticsearch
Вопрос:
Я пытаюсь импортировать данные, расположенные в файле json, в индекс elasticsearch с помощью команды curl.
Индекс создается kibana
следующим образом
PUT employees
{
"mappings" : {
"properties":{
"fields": {
"properties": {
"id": {"type": "text"},
"nom": {"type": "text"},
"prenom": {"type": "text"},
"sexe": {"type": "text"},
"socials": {
"properties": {
"name": {"type": "text"},
"url": {"type": "text"}
}
},
}
}
}
}
}
Я запускаю следующую команду для импорта данных
curl -XPUT -H "Content-Type: application/json" localhost:9200/_bulk --data-binary @users.json
users.json
файл содержит данные, представленные следующим образом
{"index": {"_index": "users", "_type": "user", "_id": 1}}
{"fields": {"id": "5fe60ae52b40e53609c803ec","nom": "Jessica","prenom": "Herrera","aboutMe": "anim","socials": [{"name": "faacebook","url": "https://www.facebook.com/profile?id=5445546"},{"name": "linkedin","url": "https://www.linkedin.com/profile?id=5445546"}],"affiliations": [{"organisation": "ANARCO","equipe": "developpement","pays": "Russian Federation","dateD": "2013-06-03T00:00:00Z" ,"dateF": "2013-06-03T00:00:00Z" }]}}
Вот ошибка, которую я получаю
"type":"illegal_argument_exception","reason":"Rejecting mapping update to [users] as the final mapping would have more than 1 type
Я прочитал много ресурсов, но все еще не могу понять, чего мне не хватает.
Ответ №1:
«тип»:»illegal_argument_exception», «причина»: «Отклонение обновления сопоставления для [пользователей], поскольку окончательное сопоставление будет иметь более 1 типа
Вы получаете вышеуказанную ошибку из-за критических изменений в Elasticsearch 6.x, в которых типы сопоставления были устаревшими.
Индексы, созданные в Elasticsearch 7.0.0 или более поздней версии, больше не принимают сопоставление по умолчанию. Индексы, созданные в 6.x, будут продолжать функционировать, как и раньше, в Elasticsearch 6.x. Типы устарели в API-интерфейсах версии 7.0, с критическими изменениями в API создания индекса, сопоставления put, получения сопоставления, размещения шаблона, получения шаблона и получения сопоставлений полей.
Вам необходимо изменить свой JSON как —
{"index": {"_index": "users", "_id": 1}}
{"fields": {"id": "5fe60ae52b40e53609c803ec","nom": "Jessica","prenom": "Herrera","aboutMe": "anim","socials": [{"name": "faacebook","url": "https://www.facebook.com/profile?id=5445546"},{"name": "linkedin","url": "https://www.linkedin.com/profile?id=5445546"}],"affiliations": [{"organisation": "ANARCO","equipe": "developpement","pays": "Russian Federation","dateD": "2013-06-03T00:00:00Z" ,"dateF": "2013-06-03T00:00:00Z" }]}}
Комментарии:
1. Но при этом я не могу получить документ по идентификатору, этот
http://localhost:9200/users/2
запрос get не работает, выдаетincorrect http method for the uri users/2
ошибку. Даже если я задам тип по умолчанию, какusers/default/2
он ничего не возвращает.2. @lies makhloufi для извлечения документа, который вам нужно использовать
http://localhost:9200/users/_doc/2
. Обратитесь к этой документации elastic.co/guide/en/elasticsearch/reference/current /… , чтобы узнать больше о get API. И не могли бы вы также поддержать мой ответ 🙂