2016-09-29 1 views
0

Я размещать так:Java Упругие ограничения по времени после execiton

Settings settings = Settings.settingsBuilder() 
         .put("cluster.name", "cluster-name") 
         .build(); 

       client = TransportClient.builder() 
         .settings(settings) 
         .build(); 

       client.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("my.elastic.server"), 9300)); 

       IndexResponse response = client 
         .prepareIndex("myindex", "info") 
         .setSource(data) //here data is stored in a Map 
         .get();  

Но data может быть около 2Mb или больше, и я забочусь о скорости он будет размещен на упругой. Каков наилучший способ ограничить это время? Такой Elastic Java API может работать или, возможно, запускать проводку в отдельном Thread или, может быть, что-то еще? Спасибо

ответ

0

Вы можете использовать Spring Data Elasticsearch в Java и Spring Batch, чтобы создать пакетное задание индекса. Таким образом вы можете разбить данные на более мелкие куски, для более частых, но меньших записей в ваш индекс.

Если ваша работа достаточно велика (миллионы записей), вы можете использовать multi-threaded batch job и значительно сократить время, затрачиваемое на создание индекса. Тем не менее, это может быть чрезмерным для меньшего индекса.

Смежные вопросы