2023年7月18日发(作者:)
Elasticsearch使⽤update_by_query elasticsearch中有⼀个⽅法是批量修改,就是先查询出需要修改的索引记录,然后批量修改。这个本来没什么,但是使⽤过的都知道,⽤java来调⽤这个⽅法很别扭。 ⼀般来说,我们使⽤elasticsearch,都建议使⽤Java Rest Client,就是RestHighLevelClient这个api。这⾥得从Java Client和JavaRest Client说起了,低版本的elasticsearch提供了ElasticsearchClient的实现,TransportClient,⼀个传输客户端。在6.4.x 版本中,需要⽤TransportClient来构建ElasticsearchClient,并且这个client才是实现本⽂update_by_query所需的client。 因为我们要使⽤UpdateByQueryRequestBuilder,所以必须使⽤ElasticsearchClient,⽽这个client只能通过TransportClient来构建,在6.4.x版本中,我们还需要引⼊transport依赖:
private static final Logger log = ger(); private static ElasticsearchClient client = null;
static{ try { client = new PreBuiltTransportClient() .addTransportAddress( new TransportAddress(ame("127.0.0.1"),9300) ); } catch (Exception e) { tackTrace(); } }
public static void update(){ UpdateByQueryRequestBuilder updateByQuery = UpdateByQueryAction .uestBuilder(client); Map
public static void main(String[] args) { update(); }} 前⾯我们通过命令的⽅式将所有students索引记录的age修改为了32,这⾥我们就将所有age=32的记录,全部修改为age=18。运⾏程序,控制台打印信息如下:2019-09-04 21:15:02 - ginInfo [main] [INFO ] - no modules loaded2019-09-04 21:15:02 - ginInfo [main] [INFO ] - loaded plugin [xPlugin]2019-09-04 21:15:02 - ginInfo [main] [INFO ] - loaded plugin [JoinPlugin]2019-09-04 21:15:02 - ginInfo [main] [INFO ] - loaded plugin [atorPlugin]2019-09-04 21:15:02 - ginInfo [main] [INFO ] - loaded plugin [hePlugin]2019-09-04 21:15:02 - ginInfo [main] [INFO ] - loaded plugin [4Plugin]2019-09-04 21:15:05 - [main] [INFO ] - update : 3 表明批量修改成功,可以查看记录: 需要注意的是,transportclient和restclient他们构建时所需的端⼝是不⼀样的,分别是9300和9200。
发布者:admin,转转请注明出处:http://www.yc00.com/news/1689628490a271998.html
评论列表(0条)