elasticsearch 从谷歌应用程序脚本查询ElasticSearch?,elasticsearch,post,google-apps-script,google-sheets,elasticsearch,Post,Google Apps Script,Google Sheets" /> elasticsearch 从谷歌应用程序脚本查询ElasticSearch?,elasticsearch,post,google-apps-script,google-sheets,elasticsearch,Post,Google Apps Script,Google Sheets" />

elasticsearch 从谷歌应用程序脚本查询ElasticSearch?

elasticsearch 从谷歌应用程序脚本查询ElasticSearch?,elasticsearch,post,google-apps-script,google-sheets,elasticsearch,Post,Google Apps Script,Google Sheets,我正在尝试用Elastices搜索的数据填充Google表单。我还没有找到任何资源显示如何从ElasticSearch->GoogleSheets开始,但我想我应该试试。使用应用程序脚本,我试图向我的ES索引发出请求,但一直未能这样做。我是这样回答这个问题的: // my .gs file - I call readFromTable() to run var payload = { "size": 1000, "query": { "match_all": {} } }

我正在尝试用Elastices搜索的数据填充Google表单。我还没有找到任何资源显示如何从ElasticSearch->GoogleSheets开始,但我想我应该试试。使用应用程序脚本,我试图向我的ES索引发出请求,但一直未能这样做。我是这样回答这个问题的:

// my .gs file - I call readFromTable() to run

var payload = {
  "size": 1000,
  "query": {
    "match_all": {}
  }
}

var options = {
  "method": "post",
  "contentType": "application/json",
  "payload": JSON.stringify(payload),
  "headers": {
    "Authorization": "Basic " + Utilities.base64Encode(username + ':' + password)
  },
};

function readFromTable() {
  Logger.log(options);
  var response = UrlFetchApp.fetch("https://" + ES_URL + ":9243/" + index_name + "/_search", options);
  Logger.log('Done.');
  Logger.log(response);
}
这里有我遗漏的东西吗?我继续得到一个DNS错误,但我不确定我的错误可能在哪里。以前有人这样做过吗


我真的很感谢你的帮助。谢谢

应用程序脚本在谷歌服务器上执行,由UrlFetchApp.fetch发起的网络请求源自谷歌服务器。如果您想要访问的资源不能公开访问,那么您将无法通过URLFACHTHAPP访问它

以下摘录内容供参考:

此服务允许脚本与其他应用程序或应用程序通信 通过获取URL访问web上的其他资源。脚本可以使用 URL获取服务,用于发出HTTP和HTTPS请求并接收 响应。URL获取服务使用谷歌的网络基础设施 为了提高效率和扩大规模

使用此服务发出的请求来自一组IP池 范围。如果你需要,你可以 将这些请求列入白名单或批准

另一种方法是编写一个在您的环境中运行的程序,即在可以访问您的弹性搜索实例的系统上运行。然后,该程序可以使用将结果输出到Google工作表


提供了多种语言来帮助编写这样的程序。例如,如果你想坚持使用Javascript,你可以利用。

ES_URL中包含的URL可以公开访问吗?啊,ES_URL是[…].[organization].com,我刚刚通过切换到非组织wifi并尝试访问ES_URL验证了它不可以公开访问-它不起作用:。你知道有没有办法解决这个问题?我通过同一个组织使用G套件,但不确定这是否相关。非常感谢您的评论!在遇到这个障碍后,我开始以同样的方式思考,直到我看到GCP API功能目前在我所在的组织中被阻止。我很好奇,在这样一个用例中,您的替代方法有多可行:最新的数据在加载时从ES加载到Google工作表中,任何编辑的数据都会发送到一个API,该API会更新ES并为编辑的行返回新值。在浏览了应用程序脚本API之后,第一个似乎是可能的,但我不敢说第二个是。如果是这样,我将推动alt方法!我真的不能谈论你们环境中的政策约束。应用程序脚本不能直接与非公开访问的系统交互,这是一个严格的技术限制。对于读和写访问,与私有ES实例交互都是不可能的。如果您可以在可以访问ES实例的环境中使用Sheets API,那么您就可以实现所描述的功能。但是,如果您首先被限制使用Sheets API,听起来您有一个政策问题需要解决。非常感谢!我一定会检查是否可以启用某些API,以及是否可以使用Sheets API。