【问题标题】:Indexing thousands of records into Elasticsearch using Index API synchronous is right approach?使用 Index API 同步将数千条记录索引到 Elasticsearch 是正确的方法吗?
【发布时间】:2021-01-09 16:14:20
【问题描述】:

我正在尝试将超过 7000 条记录索引到 elasticsearch。我将根据它的长度从 JSonarray 中挑选所有这些记录,我将遍历数组,我将使用 Indexrequest API 将记录一一索引到 elasticsearch 中。由于我是 Elastisearch 的新手,我想确认这是正确的方法。我在下面给出了我的代码。

            for (int i = 0; i < odsData.size(); i++) {
                IndexRequest request = new IndexRequest(ConstantsHelper.INDEX_NAME + strDate);
                request.id();
                String jsonString = odsData.get(i).toString();
                request.source(jsonString, XContentType.JSON);
                IndexResponse indexResponse = client.index(request, RequestOptions.DEFAULT);
            }

这是一个正确的方法吗?我还想检查数组中的记录数和索引完成后 Elasticsearch 中索引的记录数是否匹配?

【问题讨论】:

    标签: java spring-boot elasticsearch elasticsearch-java-api


    【解决方案1】:

    是的,这应该可以正常工作,但这将是一个缓慢的过程。还有一个批量索引 API,可用于一次索引多个文档,速度非常快。 Link

    【讨论】:

    • 我应该在一个批量请求中保留多少条记录?因为我的数据大小将是动态的,因为有时像 7000 条记录,有时是 12000 条?有没有限制
    • 我一次使用 10000 个文档完成了它,它工作正常。但在我看来,1000 应该是一个不错的数字。我还取决于您要索引的数据的大小。
    • 所以对于 10000 个文档,我应该点击 BulkResponse bulkResponse 10 次,对吗?
    • 是的,我其实没用过Java API,我是用Python做的,但是应该是一样的。
    • 好的,让我试试这个,让您随时了解情况
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-11
    • 2017-07-08
    • 2015-04-04
    • 2017-04-02
    • 2017-04-13
    相关资源
    最近更新 更多