【问题标题】:Axios request to Opensearch/ElasticsearchAxios 对 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 个项目

标签: javascript elasticsearch axios opensearch bodybuilder.js


【解决方案1】:

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

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

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

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

【讨论】:

  • @Adrianwritenow 已经很久了!如果它帮助您解决了您的问题,您能否接受并投票赞成答案。 TIA ;-)
猜你喜欢
  • 2021-12-11
  • 2023-03-31
  • 2022-01-27
  • 2022-01-01
  • 2020-02-14
  • 2020-06-21
  • 2021-01-16
  • 2021-02-03
  • 2021-09-01
相关资源
最近更新 更多