elasticsearch中有一个方法是批量修改,就是先查询出需要修改的索引记录,然后批量修改。这个本来没什么,但是使用过的都知道,用java来调用这个方法很别扭。
一般来说,我们使用elasticsearch,都建议使用Java Rest Client,就是RestHighLevelClient这个api。这里得从Java Client和Java Rest Client说起了,低版本的elasticsearch提供了ElasticsearchClient的实现,TransportClient,一个传输客户端。在6.4.x 版本中,需要用TransportClient来构建ElasticsearchClient,并且这个client才是实现本文update_by_query所需的client。
因为我们要使用UpdateByQueryRequestBuilder,所以必须使用ElasticsearchClient,而这个client只能通过TransportClient来构建,在6.4.x版本中,我们还需要引入transport依赖:
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>transport</artifactId>
<version>6.4.0</version>
</dependency>