当前位置: 首页 > 面试题库 >

如何确保在ElasticSearch Bonsai Free实例中使用Firebase FlashLight为每个对象建立索引

拓拔曦
2023-03-14
问题内容

感谢FlashLight
https://github.com/firebase/flashlight的教程,使用Firebase进行全文搜索很容易。

但是,如果您保留免费的ES实例,那么它在并发访问方面受到限制,并且当您启动节点应用程序时,您会在日志中看到以下消息:

无法索引firebase / xxx /
-KHLhdwGplb3lHWjm8RS:错误:超出了并发请求限制。请考虑分批处理您的请求,或联系support@bonsai.io寻求帮助。

如何解决呢?


问题答案:

如果您要索引一堆数据,则Flashlight应用程序将要求ES动态索引每个对象,而没有任何资源访问限制。您必须使用信号量来控制/限制对该共享资源的访问。

安装信号量库

npm i --save semaphore

编辑PathMonitor.js文件,并将对ES资源的访问限制为1

PathMonitor.prototype = {
    _init: function () {
        this.sem = require('semaphore')(1);
        this.addMonitor = this.ref.on('child_added', this._process.bind(this, this._childAdded));
        this.changeMonitor = this.ref.on('child_changed', this._process.bind(this, this._childChanged));
        this.removeMonitor = this.ref.on('child_removed', this._process.bind(this, this._childRemoved));
    },
    ...
    _index: function (key, data, callback) {
        var that = this;
        that.sem.take(function () {
            that.esc.index({
                index: that.index,
                type : that.type,
                id   : key,
                body : data
            }, function (error, response) {
                that.sem.leave();
                if (callback) {
                    callback(error, response);
                }
            }.bind(that));
        });
    },
    ...
}

对于付费计划,可能不需要这样做。



 类似资料:
  • 问题内容: 我有一个,并且有一个我编写的方法,该方法生成对象并返回其指针。 现在,我还有另一个方法,例如,但是到目前为止,创建对象后并不一定要调用此方法。我想确保如果创建了对象,则必须调用此方法。如何在Golang中做到这一点?如果可能的话,我也不知道这是什么。请帮忙。谢谢。 问题答案: 无法强制调用方法。最好的办法就是清楚地记录下来,如果不再需要类型的值,则必须调用其方法。 在极端情况下,如果程

  • 问题内容: 题 我有以下Firebase实时数据库: 在我的Android应用中,我这样查询 产生警告: 使用未指定的索引。考虑将“ .indexOn”添加到安全性和Firebase数据库规则中以获得更好的性能 如何正确索引?当数据增长时,我担心我的应用程序对未索引数据的查询将变得非常慢。 背景 我已经在我的规则文件中尝试过索引值: 但这仅在数据是标量但它们是键值对()的情况下才有效。 我不能像这

  • 本文向大家介绍如何在MongoDB中为多个字段建立索引的“或”索引?,包括了如何在MongoDB中为多个字段建立索引的“或”索引?的使用技巧和注意事项,需要的朋友参考一下 要为多个字段建立索引,请使用sureIndex()作为组合。使用sureIndex(),我们可以创建索引,甚至可以传递多个字段。让我们创建一个包含文档的集合- 在find()方法的帮助下显示集合中的所有文档- 这将产生以下输出-

  • 我有一个从列表中选择项目的代码,我有一个扫描器来扫描文件(每行有电影,然后是演员),并将电影添加到数组中。我该怎么做才能让它添加到arraylist中的每一部电影都能在线存储紧随其后的演员?例如:每行有一行是电影名(日期)/LastName、FirstName/Lastname2、Firstname2/等等。我的代码包含一个类电影,它将电影名称转换为字符串。我怎么能在任何给定点搜索任何电影,并让它

  • 本文向大家介绍如何在SAP中建立表索引?,包括了如何在SAP中建立表索引?的使用技巧和注意事项,需要的朋友参考一下 您需要使用事务SE11。此事务用于在表上创建索引。 在这里要牢记的一件事是将这些索引转移到生产中。您需要使用事务在开发环境中创建索引。创建它们后,您需要将它们传输到生产环境。 进行更改后,激活表格。

  • 我有两个类,一个是另一个的子类。我想这样做,即使实际对象是子类的实例,超类也可以执行其原始方法。 下面的代码打印hello null,然后输出错误: 我知道在类A中,对象实际上并不是在任何地方创建的,这就是为什么它可能是空的。我想知道我怎么才能让它不是。