# 使用RestHighLevelClient时单个索引速度很慢

**URL:** <https://discuss.elastic.co/t/resthighlevelclient/170293>\
**Category:** 中文提问与讨论\
**Created:** [February 28, 2019, 8:31am UTC](https://discuss.elastic.co/t/resthighlevelclient/170293 "2019-02-28T08:31:57Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![PearceDuan](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/pearceduan/32/41391_2.png) [@PearceDuan](https://discuss.elastic.co/u/PearceDuan)\
**Post date:** [February 28, 2019, 8:31am UTC](https://discuss.elastic.co/t/resthighlevelclient/170293/1 "2019-02-28T08:31:57Z")

</div>

Elastic版本： 6.6.1  
本地（4核,16G）运行单个节点的ES（启动时参数基本都是默认的），同时使用RestHighLevelClient循环写入1000条（每条\<1K）数据，无论是SyncIndex，还是AsyncIndex，发现耗时50s左右，相当于每秒才写入20条  
问题： 不考虑bulk操作，这种速度是否正常（感觉太慢）？有没有优化办法？

---

<div class="post-metadata">

**Author:** ![PearceDuan](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/pearceduan/32/41391_2.png) [@PearceDuan](https://discuss.elastic.co/u/PearceDuan)\
**Post date:** [March 7, 2019, 2:39am UTC](https://discuss.elastic.co/t/resthighlevelclient/170293/2 "2019-03-07T02:39:04Z")

</div>

自己回复，希望能帮到别人。

修改translog的持久化参数，参考[这里](https://www.elastic.co/guide/en/elasticsearch/reference/current/index-modules-translog.html)

比如：

```auto
PUT /test/_settings
{
  "translog.durability": "async"
}

```

这之后测试，每秒写入速度达到了500+，比之前20提高了25倍。

---

<div class="post-metadata">

**Author:** ![kyle\_yu](https://avatars.discourse-cdn.com/v4/letter/k/278dde/32.png) [@kyle\_yu](https://discuss.elastic.co/u/kyle_yu)\
**Post date:** [March 15, 2019, 7:19am UTC](https://discuss.elastic.co/t/resthighlevelclient/170293/3 "2019-03-15T07:19:31Z")

</div>

有试过调整RestHighLevelClient的连接池参数吗？默认的是比较小的，可能是在本地排队了。  
主要是调整maxTotal和maxPerRoute

```java
RestClientBuilder builder = RestClient.builder(Stream.of(properties.getAddresses()
                .split(",")).map(HttpHost::create).toArray(HttpHost[]::new));
        builder.setHttpClientConfigCallback(b -> {
            if (properties.getMaxConnTotal() != null) {
                b.setMaxConnTotal(properties.getMaxConnTotal());
            }
            if (properties.getMaxConnPerRoute() != null) {
                b.setMaxConnPerRoute(properties.getMaxConnPerRoute());
            }
            return b;
        });
        return new RestHighLevelClient(builder);

```

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)\
**Post date:** [April 12, 2019, 7:19am UTC](https://discuss.elastic.co/t/resthighlevelclient/170293/4 "2019-04-12T07:19:46Z")

</div>

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.
