2016-06-24 2 views
0

elasticsearchで検索したいですか? 私はelasticsearchのための私の運転手としてmongoosasticを使用しています。 ここでは、文字列が1つのフィールドに存在するかどうかを検索したいのですが、それが正確に一致するかどうかをもう1つのフィールドで検索したいのです。私はmongoosasticでそれをいかにすることができますか。elasticsearchで検索するには

答えて

1

必要なものは、弾性検索の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 
} 
を処理するために

関連する問題