Axios 对 Opensearch/Elasticsearch 的请求

Posted

技术标签:

【中文标题】Axios 对 Opensearch/Elasticsearch 的请求【英文标题】:Axios request to Opensearch/Elasticsearch 【发布时间】:2022-01-16 08:24:14 【问题描述】:

目前可以将GETPOST 添加到我的集合中,但需要能够进行更复杂的查询,我正在使用bodybuilder 来构建请求并作为我的客户使用axios

但是,使用 POST 不会返回我指定的结果,而只会返回我索引中的前 10 个项目,而使用 GET 我无法为这些复杂的请求发送正文,只剩下POST

我已将我的数据从data:data 切换到body:data,结果相同。

目前这是我的POST,它再次返回数据,但不是我过滤的数据,只是我收藏的前 10 项。

任何见解将不胜感激!

export function searchQuery(search: string) 
  var body = bodybuilder().query("query_string", "query", search).build();

  const data = JSON.stringify(body);
    
  axios(
    url: `$SEARCH_URL`,
    method: "POST",
    headers: 
      "Content-Type": "application/json",
    ,
    body: data,
  ).then((res) => 
    console.log(res);
  );

这是我当前的数据日志:

"query":"query_string":"query":"Green"

【问题讨论】:

请登录 data 以确保您向 ES 发送正确的请求。 手动对 ES 运行记录的请求以确保它过滤数据也是有意义的 这是我当前的数据日志:"query":"query_string":"query":"Green" 如果您直接对 Elasticsearch 运行此查询,它是否返回正确的数据? 不,它只返回我收藏中的前 10 个项目 【参考方案1】:

根据上述问题中的 cmets,当您直接针对 elasticsearch 运行查询时,您只会获得集合中的前 10 个项目。

这是因为如果搜索查询中不包含size param,elasticsearch 默认只返回搜索结果中的 10 个文档。

如果你想得到超过 10 个结果,你需要修改你的搜索查询为


  "size": 20,             // change this according to your requirement
  "query": 
    "query_string": 
      "query": "Green"
    
  

【讨论】:

@Adrianwritenow 已经很久了!如果它帮助您解决了您的问题,您能否接受并投票赞成答案。 TIA ;-)

以上是关于Axios 对 Opensearch/Elasticsearch 的请求的主要内容,如果未能解决你的问题,请参考以下文章

vue 对axios get pust put delete 封装

对 axios 请求使用动态参数

如何使用 axios 对 cloudinary 进行直接 api 调用?

axios对请求各种异常情况处理的封装方法

如何对使用 Axios(或其他异步更新)的 Vue 组件进行单元测试?

Axios 对 Opensearch/Elasticsearch 的请求