如何通过NodeJS调用elasticsearch api?

2023-11-27

我的任务是对弹性搜索 api 进行 POST api 调用,

https://search-test-search-fqa4l6ubylznt7is4d5yxlmbxy.us-west-2.es.amazonaws.com/klove-ddb/recipe/_search

我以前没有任何对 AWS 服务进行 api 调用的经验。

所以,我尝试了这个 -

axios.post('https://search-test-search-fqa4l6ubylznt7is4d5yxlmbxy.us-west-2.es.amazonaws.com/klove-ddb/recipe/_search')
            .then(res => res.data)
            .then(res => console.log(res));

但我收到{“Message”:“User:anonymous无权执行:es:ESHttpPost”}

我还检查了一些 IAM 角色,并将 AWSESFullAccess 策略添加到我的个人资料中。

我仍然无法解决任何问题。

请帮我。


您看到错误的原因User: anonymous is not authorized to perform: es:ESHttpPost是因为您在不让 ElasticSearch 知道您是谁的情况下请求数据 - 这就是为什么它显示“匿名”。

有多种身份验证方法,最简单的方法是使用弹性搜索库。使用此库,您将为该库提供一组 IAM 角色/用户的凭证(访问密钥、秘密密钥)。它将使用它来创建签名请求。签名的请求将使 AWS 知道谁实际发出请求,因此该请求不会以匿名方式接收,而是由您自己接收。

使其发挥作用的另一种方法是将您的访问策略调整为基于 IP:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "*"
            },
            "Action": "es:*",
            "Condition": {
                "IpAddress": {
                    "aws:SourceIp": [
                        "AAA.BBB.CCC.DDD"
                    ]
                }
            },
            "Resource": "YOUR_ELASTICSEARCH_CLUSTER_ARN"
        }
    ]
}

这项特殊政策将对任何拥有您在此处提供的 IP(范围)的人开放。不过,这将使您免去签署请求的麻烦。

帮助设置的库elasticsearch-js使用 AWS ES 是this one

一个工作示例如下:

const AWS = require('aws-sdk')
const elasticsearch = require('elasticsearch')
const awsHttpClient = require('http-aws-es')

let client = elasticsearch.Client({
    host: '<YOUR_ES_CLUSTER_ID>.<YOUR_ES_REGION>.es.amazonaws.com',
    connectionClass: awsHttpClient,
    amazonES: {
        region: '<YOUR_ES_REGION>',
        credentials: new AWS.Credentials('<YOUR_ACCESS_KEY>', '<YOUR_SECRET_KEY>')
    }
});

client.search({
    index: 'twitter',
    type: 'tweets',
    body: {
        query: {
            match: {
                body: 'elasticsearch'
            }
        }
    }
})
.then(res => console.log(res));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何通过NodeJS调用elasticsearch api? 的相关文章

随机推荐

  • C# 中的三元数受到限制有什么充分的理由吗?

    Fails object o 1 2 1 test 成功 object o if 1 2 o 1 else o test 第一条语句的错误是 无法确定条件表达式的类型 因为 int 和 string 之间没有隐式转换 为什么需要这样 我将这
  • 将本地 Git 存储库从 IDE 迁移到 Visual Studio Online

    我在 Visual Studio Online 上创建了一个新的团队项目 已在 Visual Studio 2013 中连接到该项目 使用 IDE 我将本地 Git 存储库 从 GitHub 上拉下来 克隆到本地 Git 存储库部分 当我浏
  • 直接从字节数组裁剪图像

    我有一个字节数组 其中包含一个图像 我想将其保存为裁剪后的 我的工作方法是 获取字节 使用 BitmapFactory decodebytearray 将其转换为位图 使用 createbitmap sourceBitmap x1 y1 w
  • 在 SQL Server 2005 中创建新的数据库用户

    如何在sql server 2005中创建一个带有密码的新数据库用户 我需要在连接字符串中使用此用户 密码 例如 uid user pwd password CREATE LOGIN user WITH PASSWORD password
  • Python 将 Adblock 与 Selenium 和 Firefox Webdriver 结合使用

    我的目标是通过 Python 将 Adblock Plus 与 Selenium 结合使用 我已经能够将其加载到加载扩展程序的位置 但默认情况下它不包含默认过滤器 EasyList 这是我到目前为止所拥有的 from selenium im
  • 比较两个通用数字的值

    我想与两种类型的变量进行比较T extends Number 现在我想知道两个变量中哪个大于另一个或相等 不幸的是我还不知道确切的类型 我只知道它将是java lang Number 我怎样才能做到这一点 EDIT 我尝试了另一种解决方法T
  • 从 docker 注册表 v2 中删除镜像

    Docker Registry v2 有一个 API 端点来删除镜像 DELETE v2
  • 将 R 文件转换为缺少字符串值的 Stata

    我在将 R 文件转换为 Stata 格式时遇到错误 我能够将数字转换为 Stata 文件 但当我包含字符串时 出现以下错误 library foreign write dta newdata X dta Error in write dta
  • 有没有一种规范的方法可以从特定的原子命名空间中获取所有标识?

    说我有 user name and user gender作为原子模式安装 pprint d q find ident where e db ident ident db install attribute e d db conn 找到所有
  • 创建文件,但如果名称存在则添加编号

    Python 是否有任何内置功能可以在文件名已存在的情况下向其添加数字 我的想法是 它会像某些操作系统的工作方式一样工作 如果一个文件输出到已经存在该名称的文件的目录 它将附加一个数字或递增它 即 如果 file pdf 存在 它将创建 f
  • 使用jquery获取按钮点击时元素的id

    我有动态生成的按钮列表 并且 id 是在运行时生成的 如何使用 JQuery 获取单击按钮的 id 这是js代码 var btn
  • SQLite 和存储图像

    我想知道哪种方式更好地将图像存储在内存中 Storing images as BLOB in DB or 仅将图像保存到文件并存储path到数据库中 什么方式效率更高 我认为存储文件的路径需要更多操作 因为我们需要引用数据库 然后引用文件
  • 在哪里可以找到 Windows API 常量列表

    每次我与 user32 dll 等 dll 交互时 我都需要 MF REMOVE 等常量 是否有所有这些常量的概述或常量所有这些常量的 C 库 您将在 win32 API 的 C 标头中找到所有常量 获取此信息的低技术方法是简单地在 Vis
  • 为什么 `lein uberjar` 计算用 `def` 定义的变量?

    我试图在创建时理解 Lieningen 行为uberjar 以下是重现该行为的最小示例 ns my stuff core gen class def some var throw Exception boom defn main args
  • 如何避免 selenium webdriver 的套接字超时?

    我有一个复杂的 python selenium 测试套件来测试非公共网页 在该设置中 我需要获取网络驱动程序 如下所示 self driver webdriver Firefox firefox profile profile log pa
  • Final 类中的 Powermock 静态 Final 方法

    我正在编写的测试用例 public class AClassUnderTest This test class has a method call public Long methodUnderTest Uses the FinalUtil
  • 水晶报表打印空白页

    我有一个水晶报告 它正在打印空白页并打印报告 但只是带有这个附加页 完成我的研究 勾选 取消勾选并将正确的公式添加到 新页面之后 选项中 而不是最后一个记录公式等 但它仍然打印空白页 这是我的部分专家详细信息 报告标题 勾选 自由格式 灰色
  • 如何以编程方式登录 WordPress?

    我需要以编程方式在 WordPress 管理面板中执行一些操作 但无法管理如何使用 C 和 HttpWebRequest 登录 WordPress 这是我所做的 private void button1 Click object sende
  • PHP 中的多重继承

    我正在寻找一种好的 干净的方法来解决 PHP5 仍然不支持多重继承的事实 这是类层次结构 Message 短信 邀请短信 邮件留言 邀请邮件留言 两种类型的邀请 课程有很多共同点 我希望有一个共同的父类 Invitation 他们都可以继承
  • 如何通过NodeJS调用elasticsearch api?

    我的任务是对弹性搜索 api 进行 POST api 调用 https search test search fqa4l6ubylznt7is4d5yxlmbxy us west 2 es amazonaws com klove ddb r