public void upsertUrlStatus(String url, String published, String source, boolean create, Enum status) throws IOException {
Date now = new Date();
IndexRequestBuilder insert = getConnection().getClient()
.prepareIndex(getIndex(), getType(), url)
.setSource(jsonBuilder()
.startObject()
.field("url", url)
.field("source", source)
.field("created", now)
.field("updated", now)
.field("published", published)
.field("status", String.valueOf(status))
.endObject())
.setCreate(create);
UpdateRequestBuilder update = getConnection().getClient()
.prepareUpdate(getIndex(), getType(), url)
.setDoc(jsonBuilder()
.startObject()
.field("updated", now)
.field("published", published)
.field("status", String.valueOf(status))
.endObject())
.setUpsert(insert.request());
getConnection().getProcessor().add(create ? insert.request() : update.request());
}