Elasticsearch использует JSON для выполнения всех операций. Например, чтобы добавить документ в индекс, вы используете операцию PUT
(скопированную из docs ):
PUT twitter/_doc/1
{
"user" : "kimchy",
"post_date" : "2009-11-15T14:12:12",
"message" : "trying out Elasticsearch"
}
Logstash существует для сбора сообщений журнала, преобразования их в JSON и выполнения этих запросов PUT. Однако все, что производит правильно отформатированный JSON и может выполнять HTTP PUT, будет работать. Если вы уже вызываете Lambdas для преобразования своего контента S3, вы сможете адаптировать их для записи JSON в Elasticsearch. Я бы использовал отдельные Lambdas для Redshift и Elasticsearch, просто чтобы улучшить управляемость.
Совет по производительности: вы, вероятно, обрабатываете множество записей одновременно, и в этом случае массовый API будет более эффективным, чем отдельные PUT. Тем не менее, существует ограничение на размер запроса, поэтому вам придется пакетировать ввод.
Также: вы не говорите, используете ли вы кластер AWS Elasticsearch или самостоятельно управляемый. В первом случае вам также придется иметь дело с аутентифицированными запросами или использовать политику доступа на основе IP в кластере. Вы не говорите, на каком языке написаны ваши Lambdas, но если это Python, вы можете использовать библиотеку aws-запросы-auth для выполнения аутентифицированных запросов.