在 mongoosastic 中搜索没有给出任何结果

Search in mongoosastic doesn't give any result

我尝试使用 mongoosastic 搜索,但它不起作用

Job.js(猫鼬模式)

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

var JobSchema = Schema({
  title: { type: String, es_indexed:true },
  category: { type: Schema.Types.ObjectId, ref: 'Category', es_indexed:true},
  salary: { type: String, es_indexed:true },
});


JobSchema.plugin(timestamps);
JobSchema.plugin(mongoosastic, {
  hosts: [
    'localhost:9200'
  ]});
module.exports = mongoose.model('Job', JobSchema);

Routes.js

var express = require('express'); 
var app = express();       
var Job = require('../models/job');


Job.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);
  }
});


app.post('/api/search/', function(req, res, next) {
  Job.search({query_string: {query: req.body.test}}, function(err, results) {
        if (err) return next(err);
        res.send(results);
    });
});

这是mongodb

中已经保存的数据集
    {
     "id": 12313,
     "title": "Engineer"
    },
    {
     "id": 13123,
     "title": "Doctor"  
    },
    {
     "id": 121243134,
     "title": "Software Engineer"
    }

当我尝试 运行 搜索并像 "Engineer" 这样搜索时,我一直得到这个结果。

已为卷曲更新

curl -XGET localhost:9200/_mapping

curl -XGET localhost:9200/_search

由于 title 是一个分析字符串,它的值使用标准分析器进行索引,即小写形式,因此 "Engineer" 将被索引,而 "engineer"

尝试以小写形式搜索 "engineer"。

更新

根据我们的讨论,问题似乎很简单,就是你的 Elasticsearch 是空的。由于您在 MongoDB 中有现有数据,您需要确保在模型上使用 call the synchronize() 方法,以便在 Elasticsearch 中索引所有 MongoDB 集合。