mongoosastic没有索​​引保存数据

时间:2016-07-07 11:27:30

标签: elasticsearch mongoosastic

我的单元测试我在使用mongoose模式的bulkindex之前使用mongoosastic截断我的模型。

架构:

  schema.plugin(mongoosastic, {
    esClient,
    index: model,
  });

架构插件:

Model.esTruncate(function (err) {

      if (err) {
          console.error(err);
      }

      console.log("[ElasticSearch] Model removed")
      Model.indexFiles();
  });

截断情形:

  Model.indexFiles = function () {
    console.log('[ElasticSearch] Start indexing ' + entityName + ' documents');

    var stream = model.synchronize();
    var count = 0;

    stream.on('data', function (err, doc) {
      count++;
    });
    stream.on('close', function () {
      console.log('[ElasticSearch] Indexed ' + count + ' ' + entityName + ' documents!');
    });
    stream.on('error', function (err) {
      console.log('mongoosastic ERROR');
      console.log(err);
    });
  };

重建索引:

Model.on('es-indexed', function (err, res) {
    console.log('model added to es index');
});

但是我记录了:

{
"rows": [
[
  "New Visitor",
  "(not set)",
  "(not set)",      
  "0"
],
[
  "New Visitor",
  "(not set)",
  "(not set)",
  "mobile"      
],
[
  "New Visitor",
  "(not set)",
  "(not set)",
  "mobile"    
],
  [
    "New Visitor",
    "(not set)",
    "(not set)",
   "mobile",      
  ]
 ]
}

在我的Post路线中,我的ES保持空白。 我不知道为什么? 此外,Model.esSearch是一个在库中不存在的函数,但它被记录在案mysqli_query 我认真考虑开始使用默认的esClient。 您对这个图书馆有什么经历?

1 个答案:

答案 0 :(得分:0)

这可能很难找到,但在我的情况下它不是库,我的ES群集健康状态是RED,因为我没有足够的磁盘空间。 您可以尝试以下方法:

  1. 停止本地ES实例
  2. 清理一些磁盘空间
  3. 重新启动ES
  4. 使用CURL截断indeces(curl -XDELETE' http://localhost:9200/model/')
  5. 重塑您的模型
  6. 如果还有问题,请考虑到ES中的更新记录是半实时的,因此可能会有一些延迟,并且应该在回调中进行记录。在截断和批量索引之后的短暂延迟后运行测试
  7. 那为我做了......