mongodb 中没有数据时出现弹性搜索 index_not_found 错误

elastic search index_not_found error when there is no data in mongodb

您好,我正在使用 monoosastic 将我的 mongodb 与弹性搜索连接起来。如果我在 mongodb 中有数据,则搜索工作正常,但如果集合为空,则在弹性搜索中出现索引未找到错误。下面是我的代码

schema.plugin(mongoosastic, {
hosts: [ELASTICSEARCH_NODE],
index:ELASTICSEARCH_INDEX_NAME
});
setInterval(function () {
var stream = Model.synchronize();
var count = 0;
stream.on('data', function (err, doc) {
if (err) {
  console.log('data error', err, doc);
}
count++;
});
stream.on('close', function () {
console.log('elastic search closed');
console.log('elastic search count -', count);
});
stream.on('error', function (err) {
console.log('elastic search error data', err);
});
}, 30000);

我试过如下更改属性

schema.plugin(mongoosePaginate);
  schema.plugin(mongoosastic, {
  hosts: [ELASTICSEARCH_NODE],
  index: ELASTICSEARCH_INDEX_NAME,
  indexAutomatically:true,
  customProperties:{
    "persistent": {
      "action.auto_create_index": "true" 
    }
    }
   });

但是没有更改还是面临同样的错误。请帮我解决一下。

目前,如果索引不存在,Elasticsearch 将在您向elasticsearch 发送数据时自动创建索引。但是当 mongodb 中没有数据时,它不会发送任何请求,因此不会创建任何索引。

要解决此问题,只需转到 Kibana 开发控制台并使用索引名称执行以下 API 命令(您也可以使用 Curl 命令执行相同操作)。它将在 Elasticsearch 中创建索引,然后您将不会遇到此问题。

PUT your_index_name