gpt4 book ai didi

reactjs - 使用 axios 向 Elasticsearch 发送请求

转载 作者:行者123 更新时间:2023-12-02 17:15:21 27 4
gpt4 key购买 nike

我正在开发一个 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 中的所有文档,我在这里做错了什么?

最佳答案

我认为下面的应该有效。虽然Axios READMEdata 专门用于 PUTPOSTPATCH 请求,我没有看到任何内容强制执行此操作的代码以及简化的测试表明,请求正文确实是针对 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 似乎允许 sending the request body in a parameter instead ,也许就是因为这个问题。

这应该可以解决问题:

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 请求的一般限制。每the documentation for XMLHttpRequest.send :

If the request method is GET or HEAD, the argument is ignored and request body is set to null.

关于reactjs - 使用 axios 向 Elasticsearch 发送请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45291983/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com