TypeError:Object#<object>没有使用elastic.js的方法'Request'

时间:2015-07-25 05:23:48

标签: node.js elasticsearch

我尝试了以下示例代码:

var es=require("elasticsearch");
var ejs = require("ejs");


var client = new es.Client({
  host: 'localhost:9200',
  log: 'trace'
});


client.ping({
  requestTimeout: 3000,

  // undocumented params are appended to the query string
  hello: "elasticsearch"
}, function (error) {
  if (error) {
    console.error('elasticsearch cluster is down!');
  } else {
    console.log('All is well');
  }
});

client.search({
  index: 'message-1',
  type: 'message',
  body: ejs.Request().query(ejs.MatchAllQuery())
}).then(function (resp) {
  var hits = resp.hits.hits;
}, function (err) {
  console.trace(err.message);
});

我尝试运行时收到以下错误:node metric.js

/home/karunakar/test/metricagg/metric.js:27
  body: ejs.Request().query(ejs.MatchAllQuery())
            ^
TypeError: Object #<Object> has no method 'Request'
    at Object.<anonymous> (/home/karunakar/test/metricagg/metric.js:27:13)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Function.Module.runMain (module.js:497:10)
    at startup (node.js:119:16)
    at node.js:929:3

我无法找到问题所在。 - 谢谢

2 个答案:

答案 0 :(得分:0)

您需要elastic.js模块,而不是ejs,这是一个模板引擎模块。

答案 1 :(得分:0)

您可以保留第一个require("elasticsearch"),但第二个应该是require("elastic.js")而不是require("ejs")