1

我在将 mongoosastic 与 KeystoneJS 结合使用时遇到问题。我想搜索标题匹配的特定用户的所有帖子。我有以下模型:

var keystone = require('keystone'),
Types = keystone.Field.Types,
mongoosastic = require('mongoosastic');
User = keystone.list('User');

var Post = new keystone.List('Post');

Post.add({
title: {
    type: String,
    required: true,
    es_indexed: true
},
state: {
    type: Types.Select,
    options: 'draft, published, archived',
    default: 'draft',
    es_indexed: true
},
author: {
    type: Types.Relationship,
    ref: 'User',
    es_schema: User,
    es_include_in_parent: true,
    es_indexed:true
},
publishedDate: {
    type: Types.Date,
    index: true,
    dependsOn: {
        state: 'published'
    }
},
content: {
    extended: {
        type: Types.Html,
        wysiwyg: true,
        height: 400,
        es_indexed: true
    }
},
});
Post.schema.plugin(mongoosastic, {
hosts: [
    process.env.SEARCHBOX_SSL_URL
]
});
Post.defaultColumns = 'title, state|20%, author|20%, publishedDate|20%';
Post.register();

Post.model.createMapping(function(err, mapping) {
if (err) {
    console.log('error creating mapping', err);
} else {
    console.log('mapping created for Post');
}
});

User.schema.plugin(mongoosastic, {
populate: [
    {path: 'author'}
]
});

我尝试了“索引猫鼬引用”(https://github.com/mongoosastic/mongoosastic#indexing-mongoose-references)的方法,但我无法让它工作。Elasticsearch 没有返回任何点击。我的搜索查询:

{
    "query": {
        "filtered": {
            "query":  { "match": { "title": "req.query.query" }},
            "filter": { "term": { "author": "req.query.userId" }} // or    author._id
        }
    }
}

有人可以为我提供正确的帖子模型配置和搜索查询吗?谢谢!

4

0 回答 0