我是 AWS 托管 ES 的新手。我之前在 ES 上作为本地服务器工作。我正在尝试使用 AWS JavaScript sdk(无 Node.js)构建两层 Web 应用程序。我创建了一个托管 ES 节点,但无法找到连接搜索和其他添加/更新文档请求的方式。AWS SDK 目前提供操作相关的类和方法,但不提供搜索等。有人可以帮助我弥合这个差距吗?我找不到任何教程或示例代码来连接搜索操作?
2 回答
不幸的是,SDK 没有为您提供读取/写入的方法。它只是通过 HTTP 请求完成的基本方式,但您应该锁定您的集群。
这是一篇关于如何锁定集群的好博文: https ://aws.amazon.com/blogs/security/how-to-control-access-to-your-amazon-elasticsearch-service-domain/
例如,您可以设置 EC2 实例并授予 EC2 IP 访问弹性搜索集群的权限。然后,在 AWS 的 Elasticsearch 页面上,您应该会看到一个端点 URL,只需将您的读/写请求指向那里,但将其锁定以保持安全。
# Example write to Elasticsearch
curl -XPUT "https://yourESUrl.com/movies/movie/1" -d'
{
"title": "The Godfather",
"director": "Francis Ford Coppola",
"year": 1972
}'
如果您需要复习 Elasticsearch 的基础知识,请查看这篇文章。
在 Node 中,您可以根据需要使用 Requests 模块来执行这些命令。
Elasticsearch.js 根据https://github.com/elastic/elasticsearch-js
Node.js 和浏览器的官方低级 Elasticsearch 客户端。
您可以在浏览器中使用它来连接经典的 Elasticsearch 解决方案。
AWS Elasticsearch 要求您签署您的请求。在节点中,您可以使用https://github.com/TheDeveloper/http-aws-es。它是用 ES6 编写的。
这不是您理想的解决方案,但您可以尝试查看源代码以了解连接器的编码方式。https://github.com/TheDeveloper/http-aws-es/blob/master/connector-es6.js
顺便说一句,直接在您的客户中公开您的 aws 凭证是否不危险?