当前位置: 首页 > 面试题库 >

使用axios将请求发送到Elasticsearch

阴鸿才
2023-03-14
问题内容

我正在开发一个React应用,该应用需要从elsaticsearch获取数据。在前端,实际上我正在尝试使用axios来执行请求:

const query = {
  query: {
    match: {
      "_id": "AV12n5KzsohD5gXzTnOr"
    }
  }
};

axios.get('http://localhost:9200/my-index/my-type/_search', query)
  .then((res) => {
    console.log(res);
  });

我想获取带有某些ID的特定文档。上面的查询实际上在kibana内部有效。但是,以上查询返回my-type内的所有文档,我在这里做错了什么?


问题答案:

我认为以下应该可行。虽然爱可信自述说,data是专门只为PUTPOST,和PATCH请求,我没有看到在强制执行此代码的任何,和简化的测试表明,请求主体为确实发出GET请求:

axios.get('http://localhost:9200/my-index/my-type/_search', {
  data: JSON.stringify(query),
}).then((res) => {
  console.log(res);
});

编辑

请注意,我仅在Node.js中进行了测试,而没有在浏览器中进行过测试。浏览器可能不太愿意在请求中包含请求主体GET

编辑2

Elasticsearch似乎允许改为在参数中发送请求正文,也许是因为这个问题。

这应该可以解决问题:

axios.get('http://localhost:9200/my-index/my-type/_search', {
  params: {
    source: JSON.stringify(query),
    source_content_type: 'application/json'
  }
}).then((res) => {
  console.log(res);
});

编辑3

确实,这确实是GET在浏览器中发出请求的一般限制。根据XMLHttpRequest.send的文档:

如果请求html" target="_blank">方法是GET或HEAD,则忽略参数,并将请求主体设置为null。



 类似资料:
  • 我尝试使用axios对烧瓶服务器进行POST: 现在是烧瓶的部分 但是,我最终会出现以下错误: 无法加载XMLHttpRequesthttp://127.0.0.1:5000/test.对飞行前请求的响应未通过访问控制检查:请求的资源上不存在“access control Allow Origin”标头。起源'http://localhost:3000因此不允许访问。 为什么?我将按照建议设置标题

  • 这个请求在postman中工作得非常好,所以我认为它与cors相关,并安装了fastify-cors,但我仍然得到同样的错误。 有人有什么建议如何解决这个问题吗?

  • 问题内容: 我正在使用Axios从客户端向我的Express.js服务器发送请求。 我在客户端上设置了一个cookie,我想从所有Axios请求中读取该cookie,而无需手动将其手动添加到请求中。 这是我的客户端请求示例: 我试图通过在Express.js服务器中使用以下属性来访问标头或cookie: 他们两个都不包含任何cookie。我正在使用cookie解析器中间件: 如何使Axios自动在

  • 本文向大家介绍Vue.js实战之使用Vuex + axios发送请求详解,包括了Vue.js实战之使用Vuex + axios发送请求详解的使用技巧和注意事项,需要的朋友参考一下 前言 Vue 原本有一个官方推荐的 ajax 插件 vue-resource,但是自从 Vue 更新到 2.0 之后,官方就不再更新 vue-resource 目前主流的 Vue 项目,都选择 axios 来完成 aja

  • axios请求点击控制器上的url,但将空值设置到POJO类中,当我使用chrome中的开发人员工具时,有效负载包含数据。我做错了什么? Axios POST请求: 浏览器响应: 过帐多部分/表单数据时出错。Content-Type标头缺少边界 谁能解释一下如何设置边界或者我如何使用Axios发送表单数据。

  • 我试图发送一个csv文件到我的javaSpring启动后端。发送文件的代码如下: 以及从Spring Boot接受我的文件的代码: 然而,这似乎行不通。我一直收到一个错误,说当前请求不是一个多部分请求。有什么想法吗?