elasticsearch,node-request,Node.js,Get,Request,elasticsearch,Node Request" /> elasticsearch,node-request,Node.js,Get,Request,elasticsearch,Node Request" />

Node.js 节点+;ElasticSearch:在GET请求中发送实体?

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

我正在使用Node.js和
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计算机!