Node.js 节点+;ElasticSearch:在GET请求中发送实体?
我正在使用Node.js和Node.js 节点+;ElasticSearch:在GET请求中发送实体?,node.js,get,request,elasticsearch,node-request,Node.js,Get,Request,elasticsearch,Node Request,我正在使用Node.js和request模块创建后端,我们选择Elasticsearch作为数据存储。到目前为止一切正常,只是节点似乎不支持GET请求的请求体?对于,这是必需的,它只希望GET请求作为其语义设计的一部分。是否有一种解决方案,即使在GET请求的情况下,也可以强制节点发送请求正文,或者在Elasticsearch上使用另一个HTTP谓词的\u search function elasticGet(url, data) { data = data || {}; retu
request
模块创建后端,我们选择Elasticsearch作为数据存储。到目前为止一切正常,只是节点似乎不支持GET请求的请求体?对于,这是必需的,它只希望GET请求作为其语义设计的一部分。是否有一种解决方案,即使在GET请求的情况下,也可以强制节点发送请求正文,或者在Elasticsearch上使用另一个HTTP谓词的\u search
function elasticGet(url, data) {
data = data || {};
return Q.nfcall(request.get, {
uri: url,
body: JSON.stringify(data) //<-- noop
}).then(function(response) {
return JSON.parse(response[1]);
}, function(err) {
console.log(err);
});
}
函数elasticGet(url、数据){
数据=数据|{};
返回Q.nfcall(request.get{
uri:url,
body:JSON.stringify(data)/为了简单起见,为什么不使用他们的api而不是手动发出请求
简单的例子:
var elasticsearch = require('elasticsearch'),
client = new elasticsearch.Client({
host: '127.0.0.1:9200',
log: 'trace'
});
client.search({
index: '[your index]',
q: 'simple query',
fields: ['field']
}, function (err, results) {
if (err) next(err);
var ids = []
if (results && results.hits && results.hits.hits) {
ids = results.hits.hits.map(function (h) {
return h._id;
})
}
searchHandler(ids, next)
})
您可以将它与fullscale labs elastic.js结合起来,以非常快速的方式构建非常复杂的查询。
搜索API也接受POST
动词。我几天前遇到过这样的问题
tld;dr使用POST
根据您的需要,也可以使用带有松紧带的贴子
我在axios上试过,但它返回的所有数据都像没有实体一样。
所以我改用POST。它对我有效,我希望它能帮助其他人。我尝试过使用它,但由于某些原因,它完全失败,所有请求都超时,即使连接完美。在我测试它时将接受,现在无法访问dev计算机!