首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用Node.js在Elasticsearch中索引1000多个文档?

如何用Node.js在Elasticsearch中索引1000多个文档?
EN

Stack Overflow用户
提问于 2019-09-17 23:13:08
回答 1查看 104关注 0票数 0

我已经构建了一个Node.js应用程序,它将来自API的结果作为文档索引到Elasticsearch中,但是ES总共只能索引1000个文档。总共有超过100k的数据需要被索引。我似乎找不到任何地方来解释如何将这个1k文档摄取限制更改为不同的数字。

以下是我的代码示例,除了1k文档限制之外,它工作得很好。

代码语言:javascript
复制
ATX_TRAFFIC_INCIDENTS.data.map(async traffic => (
        await client.index({ 
            index: 'atx_traffic',
            id: traffic.traffic_report_id,
            type: 'data',
            body: {  
                traffic_report_id: traffic.traffic_report_id,
                published_date: traffic.published_date,
                issue_reported: traffic.issue_reported,
                status_date: traffic.traffic_report_status_date_time,
                status: traffic.traffic_report_status,
                address: traffic.address,
                latitude: traffic.latitude,
                longitude: traffic.longitude, 
                location:
                    { 
                        lat: traffic.latitude,
                        lon: traffic.longitude,
                    }
            }
        })
    ));
EN

回答 1

Stack Overflow用户

发布于 2019-09-18 05:06:01

首先,不存在不能将超过1000个文档插入到ElasticSearch中的内在原因。您的问题很可能是由映射到您的承诺引起的,这是一种反模式。

通过映射Promises,您无法知道它们中是否有任何在函数完成之前解析。您也无法对抛出的任何错误做出反应。你真的,真的应该为每个Promise添加一个.catch(),原因很简单,任何失败都可以提醒你。

将多个Promise作为一个组运行的正确方法是将您的Promise存储在一个数组中,然后将该数组传递给Promise.all()

Promise.all()会一直等到你的所有承诺都被解决或拒绝后,才会将控制权交还给你的函数。

使用Promise.all()的另一个好处是,一旦您的所有承诺都解决了,它将返回一个包含所有结果的数组,然后返回。

有关详细信息,请参阅ES6 Promises: Patterns and Anti-Patterns

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57977285

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档