在nodejs中从弹性搜索中获取对象

时间:2015-09-18 16:04:37

标签: json node.js express elasticsearch

我正在使用nodejs / express进行webapp并将数据存储在弹性搜索中。我想在弹性搜索中添加类似用户配置文件的内容,当我将其调出时调用方法。我已经习惯了Java / C#所以我希望能做类似

的事情
var user = new User(elasticSearchResult)
user.getUserRoles()

构造函数将解析数据,类将包含我需要的所有方法。

2 个答案:

答案 0 :(得分:1)

你需要这个https://www.npmjs.com/package/elasticsearch 然后,您可以为该User类创建函数

User.getUserRoles = function(){
client.search({
   index: ....,
   type: ....
   body: {
       query: {
        ....
       }
   }
}).then(function (resp) {
  //Handle records return here
}, function (err) {
  //handle error here
});

答案 1 :(得分:0)

我最终将此用于我的用户类

var proto = User.prototype;
function User(){}

proto.setRoles = function(roles) {
    this.roles = roles;
};

proto.fromJson = function(json) {
    if(json._source) {  // From ElasticSearch query
        this.roles = json._source.roles;
    }
};
exports.User = User;

在我的通话班中

var user = new UserClass.User();
db.searchForUser(user.email, function(err, success) {
    if (success.hits.total == 1) {
        var userFromDb = success.hits.hits[0];
        user.fromJson(userFromDb);
        return done(null, user);
    }
});

如果有人想知道,这是我的searchForUser方法

exports.searchForUser = function (email, callback) {
    var qryObj = {
        "query": {
            "bool": {
                "must": [
                    {
                        "match": {
                            "email": email
                        }
                    }
                ]
            }
        }
    };
    client.search ({index:'myindex', type:'user', body: qryObj}, callback);
};