0

elasticsearchmongoosasticを使用しています。そして、私はすべてのセットアップとその動作を正常に完了しました。しかし、問題は結果が正しく得られないことです。

FILE:- マングースとモングーサスティック。

var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var medicineSchema = require('./search')
var mongoosastic = require("mongoosastic");

var UserProfileSchema = new Schema({
    userId: String,
    username: String,
    address: String,
    number: Number,
    task: [{
        name: {
            type: String,
            es_boost: 2.0 // or es_indexed:true
        },
        taskCode: String,
    }]
});
UserProfileSchema.plugin(mongoosastic);
UserProfileSchema.plugin(mongoosastic, {
    host: "localhost",
    port: 9200,
    //  ,curlDebug: true
});
UserProfile = module.exports = mongoose.model('UserProfile', UserProfileSchema);
UserProfile.createMapping(function(err, mapping) {
    if (err) {
        console.log('error creating mapping (you can safely ignore this)');
        console.log(err);
    } else {
        console.log('mapping created!');
        console.log(mapping);
    }
});

そして私の検索クエリ:

var UserProfileSchema = require('../../app/models/user');
 UserProfileSchema.search({
        query_string: {
            query: name
        }
    }, function(err, result) {
        if (err) {
            callback({
                RESULT_CODE: '-1',
                MESSAGE: 'System error'
            });
        } else {
            callback({
                RESULT_CODE: '1',
                DATA: result
            });
        }
    });

今私の問題は、 タスク配列に3つのオブジェクトがあり、タスク文字列、つまり「abc」を検索すると、完全なコレクションが返されることです。すべてのタスクでしかし、タスク配列から検索された文字列オブジェクトのみが必要です。つまり、名前:abc オブジェクト

……

"task" [{
    name: 'abc',
    taskCode: 123
},{
    name: 'xyz',
    taskCode: 123
},{
    name: 'cdx',
    taskCode: 123
}]

4

1 に答える 1

0

良いことは、taskフィールドが既にnestedスキーマ内の型になっていることです。これは、期待どおりに動作するための前提条件です。

必要なものを実現するには、クエリで使用する必要がありinner_hitsます。

UserProfileSchema.search({
  "query": {
    "nested": {
      "path": "task",
      "query": {
        "match": {
          "task.name": name
        }
      },
      "inner_hits": {}        <--- this does the magic
    }
  }
}, ...
于 2015-08-30T03:52:36.057 に答える