1. ホーム
  2. node.js

[解決済み] Elasticsearch は IndexMissingException を返します。

2022-02-16 16:07:55

質問

elasticSearchとelmongoであるmongooseを使って、node.jsで検索エンジンを実装しようとしています。検索APIを実行しようとすると、次のようなメッセージが表示されます。 "error": "IndexMissingException[[ads] missing]".IndexMissingException[[ads] missing]".IndexMissingException[[ads] missing]"

以下はそのコードです。

advertisingSchema.js

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


var AdSchema = new Schema({
    title: String,
    description: String,
    category: String,
    phoneNumber: { type: Number, unique: true},
    photos: [{ type: String }],
    created: { type: Date, default: Date.now},
    price: Number,
    password: String
});

AdSchema.plugin(elmongo);

module.exports = mongoose.model('Ad', AdSchema

);

api.js

   var Ad = require('../models/advertising');


module.exports = function(app, express) {

    var api = express.Router();
    Ad.sync(function(err) {
        console.log("Check the number sync");
    })

    api.post('/search', function(req, res) {
        Ad.search(req.body, function(err, result){
            if(err) {
                res.send(err);
                return;
            }
            res.json(result);
        });
    });

    return api;
  }

すべて正しく行ったのですが、検索結果を返そうとしません。

どうすればいいですか?

エラーが示すように、クラスタに 'ads' という名前のインデックスが存在しません。elasticsearch の設定で "action.auto_create_index" というプロパティを false に設定しない限り、インデックスは自動的に作成されます。インデックスをプログラム的に作成するか、curlリクエストを実行することで作成することができます。 以下を参照してください。 create index api.