Я использую Nodejs для индексации некоторых данных в Elasticsearch (размещенных в kubernetes), я использую метод client.create() для индексации документа в Elasticsearch. Если я запускаю код на локальном хосте и конечной точке kubernetes Elasticsearch, все работает нормально. Но после развертывания того же кода при попытке проиндексировать документ я получаю сообщение об ошибке:
"[invalid_type_name_exception] Document mapping type name can't start with '_', found: [_create] :: {"path":"/index_name/_create/docId"]".
Версия Elasticsearch «6.3.0» и версия node_module «^ 16.0.0». Кроме того, он работал изначально, но перестал работать в последние несколько дней. Я думаю, что проблема связана с некоторыми совместимостью и конфигурациями, кто-нибудь может помочь?
Я попытался использовать client.index вместо client.create, и он отлично работает. я уже сопоставил все файлы конфигурации и совместимости на локальном компьютере и сервере. Мне кажется, все в порядке.
const elasticsearchDoc = {
index: "school",
type: "_doc",
id: 12345,
body: { name:"raj",marks:40 }
};
const result = await client.create(elasticsearchDoc);
...





Я думаю, проблема в том, что вы используете библиотеку старый JS-клиент вместо новый.
С 16.0.0 вам нужно чтобы явно установить параметр apiVersion для версии 6.x, потому что 7.0 используется по умолчанию, и, вероятно, поэтому вы видите эту ошибку (поскольку вы используете ES 6.3.0):
apiVersion: 6.7
Вы уверены, что у вас одинаковая версия ES на локальном компьютере и на сервере?
да, версия 6.3.0. Я также уверен, что это какая-то проблема с конфигурацией или совместимостью, но я не могу понять это.
да, я получил решение, это была проблема с версией модуля узла. то есть конфликт совместимости версий. Спасибо за ваш ответ, это действительно помогло.
Круто, рад, что ты разобрался, не стесняйся, если помогло ;-)
Но как это работает на локальном хосте, потому что я использую одну и ту же версию node_module как на локальном, так и на сервере