У меня загадочная проблема: у меня есть лямбда-функция, которая переносит данные из корзины S3 в кластер AWS ES. Моя лямбда-функция работает правильно и сообщает следующее:
All 6 log records added to ES
Однако добавленные документы не отображаются в индексе AWS ElasticSearch. / _cat / индексы? v
health status index uuid pri rep docs.count docs.deleted store.size pri.store.size
yellow open logs 3N2O9CqhSwCP6sj1QK5EQw 5 1 0 0 1.2kb 1.2kb
Я использую эту лямбда-функцию https://github.com/aws-samples/amazon-elasticsearch-lambda-samples/blob/master/src/s3_lambda_es.js Роль лямбда-функции имеет полные права доступа к кластеру ES и корзине S3. Он может получить доступ к ведру S3, потому что я могу распечатать содержимое журнала консоли Lambda.
Приветствуются любые идеи для дальнейшей отладки!
Ваше здоровье
Также было бы неплохо увидеть, что содержится в ответе body после завершения запроса. Там может быть какая-то полезная информация. Также зачем возиться с переопределением клиента ES, когда вы могли просто require официальный Клиент JS и использовать его?
Вот так. Один интересный вывод из тела ответа: type":"illegal_argument_exception","reason":"unknown setting [index.remote_addr] please check that any required plugins are installed, or check the breaking changes documentation for removed settings"}] Я подозреваю, что лямбда-функция была написана для более старой версии. Также тип запроса неверен, потому что для ES 6.3 он должен быть PUT вместо POST. Спасибо!
Я бы определенно использовал официальный клиент JS, как я сказал выше.
Спасибо за помощь! по-видимому, мое отображение и структура json из библиотеки clf-parser (в примере github) не совпадали





Для этого может быть много причин. Поскольку вы спрашиваете об идеях для отладки, вот несколько из них:
Добавьте console.info в метод лямбда postDocumentToES, который показывает, где именно он подключается
Попробуйте извлечь код из лямбды и запустить его локально, чтобы убедиться, что он успешно отправляется в эластичный поиск (чтобы код был по крайней мере правильным)
Убедитесь, что нет «особых ограничений» на индекс (например, ttl на пару минут или что-то в этом роде) или, может быть, чего-то, что не позволяет вставлять в индекс.
Сколько у вас серверов ES? Возможно, существует их кластер, и репликация настроена неправильно, поэтому, когда вы проверяете состояние индекса в одном ES, на самом деле у него нет документов, но другой сервер ES может иметь эти документы.
Вы уверены, что правильно настроили
esDomain? т.е. вы уверены, что проверяете тот же кластер (в том же регионе), в который отправляете документы?