使用axios将请求发送到Elasticsearch

我正在开发一个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

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);

});

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

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

以上是 使用axios将请求发送到Elasticsearch 的全部内容, 来源链接: utcz.com/qa/428986.html

回到顶部