Elasticsearch curl 请求在 Angular 4 中无法按预期工作

问题描述 投票:0回答:2

我在我的 Angular 项目中安装了curl npm 包(https://www.npmjs.com/package/curl),并且我一直在使用curl.postJSON() 方法发布到云上的Elasticsearch 集群。我现在需要使用curl.get()方法,但它没有按预期工作。

在终端中,这是有效的curl 请求,我需要在我的 Angular 项目中使用:

curl -XGET https://search-example-xxxxxxxxxxxxxxxxxxx.us-east-2.es.amazonaws.com/myproject/_search? -d '
{ 
    "query" :
    { "match": { "myfield": "NJ-PA-xxxx-x" } }

}
'

这是我的主要组件中不起作用的方法:

myMethod(){
    var getData =  { "query" : { "match": { "myfield": "NJ-PA-xxxx-x" } } };

    var circLink = curl.get("https://search-example-xxxxxxxxxxxxxxxxxxx.us-east-2.es.amazonaws.com/myproject/_search", getData,
      function (err, httpResponse, body) {
          console.log(err, body);
      });
   console.log('this is the circLink: ' + circLink );  
}

这将返回“这是 circLink:未定义”

由于console.log(err, body),它还返回我的elasticsearch集群中的每个文档(全部33个)。同时,当我在终端中运行curl 命令时,它仅返回3 个文档。有什么想法可以让我返回正确的卷曲请求吗?

我认为这可能与我的终端curl请求中的“-d”有关,而不是与角度有关,因为当我在终端中运行没有“-d”的get请求时,它返回elasticsearch集群中的所有文档。我仍然不知道如何将“-d”与curl.get()合并

angular typescript curl elasticsearch
2个回答
0
投票
  1. curl 包自 2011 年以来没有任何变化。我推荐官方的 elasticsearch.js 客户端(https://www.elastic.co/guide/en/elasticsearch/client/javascript-api/current/index.html) .

  2. 从技术上讲,您可以发送带有正文的 HTTP GET 请求,但这由于各种原因有缺点(GET HTTP 请求有效负载


0
投票

Angular 的人非常聪明,他们决定故意用 body 阻止 GET 和 DELETE 请求,从而破坏了与 ElasticSearch 的 anu 兼容性。
我已经在他们的 GutHub 网站上开了几张票,其中包含启用此功能的建议。
因此,您必须运行带有正文的普通 HTTP GET 请求才能与 ELK 配合使用。

© www.soinside.com 2019 - 2024. All rights reserved.