Skip to content

Instantly share code, notes, and snippets.

View Udith's full-sized avatar

Udith Gunaratna Udith

View GitHub Profile
package com.sample.es.udith;
import org.elasticsearch.action.admin.indices.optimize.OptimizeResponse;
import org.elasticsearch.action.bulk.BulkRequestBuilder;
import org.elasticsearch.action.bulk.BulkResponse;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.action.search.SearchType;
import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.common.transport.InetSocketTransportAddress;
import org.elasticsearch.common.unit.TimeValue;
package com.sample.es.udith;
import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.common.transport.InetSocketTransportAddress;
public class ESManager {
private final String ES_INDEX;
private final String ES_TYPE;
private final String ES_TIME_FIELD;
private final int EXPIRE_DAYS;
public void cleanESDocs() {
final Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.DATE, -EXPIRE_DAYS);
SearchResponse scrollResp = elasticsearch.prepareSearch(ES_INDEX).setTypes(ES_TYPE)
.setSearchType(SearchType.SCAN)
.setScroll(new TimeValue(600000))
.setQuery(QueryBuilders.filteredQuery(QueryBuilders.matchAllQuery(),
FilterBuilders.andFilter(
FilterBuilders.rangeFilter(ES_TIME_FIELD).to(calendar.getTimeInMillis())
public void cleanESDocs() {
final Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.DATE, -EXPIRE_DAYS);
BulkRequestBuilder bulkRequest = elasticsearch.prepareBulk();
SearchResponse scrollResp = elasticsearch.prepareSearch(ES_INDEX).setTypes(ES_TYPE)
.setSearchType(SearchType.SCAN)
.setScroll(new TimeValue(600000))
.setQuery(QueryBuilders.filteredQuery(QueryBuilders.matchAllQuery(),
FilterBuilders.andFilter(
private void optimizeIndex() {
OptimizeResponse optimizeResponse = elasticsearch.admin().indices()
.prepareOptimize(ES_INDEX)
.setFlush(true)
.setOnlyExpungeDeletes(false)
.execute().actionGet();
System.out.println("Elasticsearch index optimization finished with " +
optimizeResponse.getSuccessfulShards() + " successful and " +
optimizeResponse.getFailedShards() + " failed shards out of " +
@Udith
Udith / ThreadPoolExecutor_1.java
Created October 8, 2017 20:33
An extract from execute() method of Java's java.util.concurrent.ThreadPoolExecutor class
int c = ctl.get();
if (workerCountOf(c) < corePoolSize) {
if (addWorker(command, true))
return;
c = ctl.get();
}
if (isRunning(c) && workQueue.offer(command)) {
int recheck = ctl.get();
if (! isRunning(recheck) && remove(command))
reject(command);
@Override
public boolean offer(Runnable e) {
return currentIdleThreadCount.get() > 0 && super.offer(e);
}
@Udith
Udith / ThreadPoolExecutor_2.java
Created October 9, 2017 07:48
An extract from getTask() method of Java's java.util.concurrent.ThreadPoolExecutor class
Runnable r = timed ?
workQueue.poll(keepAliveTime, TimeUnit.NANOSECONDS) : workQueue.take();
@Override
public Runnable take() throws InterruptedException {
currentIdleThreadCount.incrementAndGet();
Runnable take = super.take();
currentIdleThreadCount.decrementAndGet();
return take;
}
@Override
public Runnable poll(long timeout, TimeUnit unit) throws InterruptedException {
currentIdleThreadCount.incrementAndGet();
Runnable poll = super.poll(timeout, unit);
currentIdleThreadCount.decrementAndGet();
return poll;
}