首页 > 解决方案 > Angular7 中的 ElasticSearch Post 调用抛出 400 错误

问题描述

我正在尝试在 Angular 7 中进行 elasticSearch Post 调用,但它会引发 400 错误。

public elasticSearch<T>(): Observable<ElasticModel<T>> {
  const reqBody = {
    "query": {
      "bool": {
        "should": {
          "match": {
            "status": "IN_PROGRESS"
          }
        }
      }
    }
  };
  // tslint:disable-next-line:max-line-length
  return this.http.get<ElasticResponseData<T>>(`${this.apiUri}/_search/query?indexName=` + 1 + `&query=` + JSON.stringify(reqBody) + `&size=` + 2 + `&from=` + (page - 1) * size);
  // return this.http.get<ElasticResponseData<T>>(`${this.apiUri}/_search`);
}

尽管没有传递任何参数并定期进行,但我能够成功拨打电话get call

return this.http.get<ElasticResponseData<T>>(`${this.apiUri}/_search`);

标签: angularelasticsearchdatatableangular-materialangular-datatables

解决方案


您发送的 JSON 查询旨在在HTTP 请求的正文中发送。您通过URL发送它

你有两个选择:

  1. 使用此处找到的 URI Search DSL 。这有一组更有限的查询选项,但它不需要请求正文
  2. 修改您的 Angular 代码以在请求的实际正文中发送 JSON。根据这篇文章,HttpClient 库没有简单的方法来处理 GET 请求。您可能必须为此编写自定义代码。

推荐阅读