【问题标题】:How to search in elasticsearch如何在elasticsearch中搜索
【发布时间】:2016-07-19 22:44:44
【问题描述】:

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

【问题讨论】:

    标签: elasticsearch mongoosastic


    【解决方案1】:

    您需要的是 Elastic 搜索的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
    }
    

    【讨论】:

    • 嗨@Paradise228,有什么方法可以支持使用mongoosastic的函数分数查询,我试图在文档中找到但运气不好。
    猜你喜欢
    • 1970-01-01
    • 2017-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多