我想在elasticsearch中搜索。
我正在使用mongoosastic作为elasticsearch的驱动程序。
我想在哪里搜索一个字符串是否存在于一个字段中,我想再搜索一个字段是否应完全匹配一个字符串。我怎么能做到Monososatic。

最佳答案

您需要的是Elastic search的bool query功能。

我不知道您在此过程中遇到什么困难,但我将尝试描述该过程。

要将模型索引到Elasticsearch中,只需添加插件。

var mongoose     = require('mongoose'),
   mongoosastic = require('mongoosastic'),
   Schema       = mongoose.Schema

var User = new Schema({
   name: String,
   country: String,
   age: Number,
   email: String,
   city: String})

User.plugin(mongoosastic)

然后,您可以在模型上执行ES搜索,但首先要格式化查询。假设您希望每个用户都居住在英国而不是伦敦,并且希望匹配30至40岁的用户:
var query = {
    "bool" : {
        "must" : {
            "term" : { "country" : "england" }
        },
        "must_not" : {
            "city" : { "city" : "london" }
        },
        "should" : {
            "range" : {
                "age" : { "from" : 30, "to" : 40}
            }
        }
    }
}

您会获得与您的查询字词不符的用户,但ES会使用评分系统对结果进行排序。

最后,您将查询发送到ES并处理结果
User.search(query, function (err, users) {
    if (err) {
        //Handle error
    }

    var results = users.hits.hits;

    //work with your hits
}

关于elasticsearch - 如何在Elasticsearch中搜索,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38005321/

10-14 10:30
查看更多