} else { String script = getDeletionScript(informations, storename, mutation); brb.add(client.prepareUpdate(indexName, storename, docid).setScript(script, ScriptService.ScriptType.INLINE)); log.trace("Adding script {}", script); UpdateRequestBuilder update = client.prepareUpdate(indexName, storename, docid).setScript(script, ScriptService.ScriptType.INLINE); if (needUpsert) { XContentBuilder doc = getNewDocument(mutation.getAdditions(), informations.get(storename), ttl);
.setId(element.getId()) .setType(ELEMENT_TYPE) .setScript(script, ScriptService.ScriptType.INLINE) .setRetryOnConflict(MAX_RETRIES) .setScriptParams(params);
.setScriptedUpsert(true) .setUpsert(source) .setScript(new Script( ScriptType.STORED, "painless",
private UpdateRequestBuilder prepareUpdateFieldsOnDocument( String indexName, String documentId, Map<String, Object> fieldsToSet, Collection<String> fieldsToRemove, Map<String, String> fieldsToRename ) { if ((fieldsToSet == null || fieldsToSet.isEmpty()) && (fieldsToRemove == null || fieldsToRemove.isEmpty()) && (fieldsToRename == null || fieldsToRename.isEmpty())) { return null; } fieldsToSet = fieldsToSet == null ? Collections.emptyMap() : fieldsToSet.entrySet().stream() .collect(Collectors.toMap(e -> replaceFieldnameDots(e.getKey()), Map.Entry::getValue)); fieldsToRemove = fieldsToRemove == null ? Collections.emptyList() : fieldsToRemove.stream().map(this::replaceFieldnameDots).collect(Collectors.toList()); fieldsToRename = fieldsToRename == null ? Collections.emptyMap() : fieldsToRename.entrySet().stream() .collect(Collectors.toMap(e -> replaceFieldnameDots(e.getKey()), e -> replaceFieldnameDots(e.getValue()))); return getClient().prepareUpdate() .setIndex(indexName) .setId(documentId) .setType(getIdStrategy().getType()) .setScript(new Script( ScriptType.STORED, "painless", "updateFieldsOnDocumentScript", ImmutableMap.of("fieldsToSet", fieldsToSet, "fieldsToRemove", fieldsToRemove, "fieldsToRename", fieldsToRename) )) .setRetryOnConflict(MAX_RETRIES); }
.setScriptedUpsert(true) .setUpsert(source) .setScript(new Script( ScriptType.STORED, "painless",
private UpdateRequestBuilder prepareUpdateFieldsOnDocument( String indexName, String documentId, Map<String, Object> fieldsToSet, Collection<String> fieldsToRemove, Map<String, String> fieldsToRename ) { if ((fieldsToSet == null || fieldsToSet.isEmpty()) && (fieldsToRemove == null || fieldsToRemove.isEmpty()) && (fieldsToRename == null || fieldsToRename.isEmpty())) { return null; } fieldsToSet = fieldsToSet == null ? Collections.emptyMap() : fieldsToSet.entrySet().stream() .collect(Collectors.toMap(e -> replaceFieldnameDots(e.getKey()), Map.Entry::getValue)); fieldsToRemove = fieldsToRemove == null ? Collections.emptyList() : fieldsToRemove.stream().map(this::replaceFieldnameDots).collect(Collectors.toList()); fieldsToRename = fieldsToRename == null ? Collections.emptyMap() : fieldsToRename.entrySet().stream() .collect(Collectors.toMap(e -> replaceFieldnameDots(e.getKey()), e -> replaceFieldnameDots(e.getValue()))); return getClient().prepareUpdate() .setIndex(indexName) .setId(documentId) .setType(getIdStrategy().getType()) .setScript(new Script( ScriptType.STORED, "painless", "updateFieldsOnDocumentScript", ImmutableMap.of("fieldsToSet", fieldsToSet, "fieldsToRemove", fieldsToRemove, "fieldsToRename", fieldsToRename) )) .setRetryOnConflict(MAX_RETRIES); }
if (options.getScriptType() != null) { Map<String, ? extends Object> params = (options.getScriptParams() == null ? null : options.getScriptParams().getMap()); builder.setScript(new Script(options.getScript(), options.getScriptType(), options.getScriptLang(), params)); } else { builder.setScript(new Script(options.getScript()));
private UpdateRequestBuilder prepareRemoveFieldsFromDocument(String indexName, String documentId, Collection<String> fields) { List<String> fieldNames = fields.stream().map(this::replaceFieldnameDots).collect(Collectors.toList()); if (fieldNames.isEmpty()) { return null; } return getClient().prepareUpdate() .setIndex(indexName) .setId(documentId) .setType(getIdStrategy().getType()) .setScript(new Script( ScriptType.STORED, "painless", "deleteFieldsFromDocumentScript", ImmutableMap.of("fieldNames", fieldNames) )) .setRetryOnConflict(MAX_RETRIES); }
private UpdateRequestBuilder prepareRemoveFieldsFromDocument(String indexName, String documentId, Collection<String> fields) { List<String> fieldNames = fields.stream().map(this::replaceFieldnameDots).collect(Collectors.toList()); if (fieldNames.isEmpty()) { return null; } return getClient().prepareUpdate() .setIndex(indexName) .setId(documentId) .setType(getIdStrategy().getType()) .setScript(new Script( ScriptType.STORED, "painless", "deleteFieldsFromDocumentScript", ImmutableMap.of("fieldNames", fieldNames) )) .setRetryOnConflict(MAX_RETRIES); }
/** * Helper method to remove fields from source. This method will generate a ES update request. Retries on conflict. * * @param element Element that can be mapped to an ES document * @param fields fields to remove */ private void removeFieldsFromDocument(Element element, Collection<String> fields) { Map<String, Object> params = Maps.newHashMap(); int i = 0; StringBuilder script = new StringBuilder(); for (String field : fields) { String fieldName = "fieldName" + (i++); script.append("ctx._source.remove(").append(fieldName).append(");"); params.put(fieldName, field); } getClient().prepareUpdate() .setIndex(getIndexName(element)) .setId(element.getId()) .setType(ELEMENT_TYPE) .setScript( new Script( script.toString(), ScriptService.ScriptType.INLINE, null, params ) ) .setRetryOnConflict(MAX_RETRIES) .get(); }
client.prepareUpdate(indexName, storename, docid).setScript(script.toString()).execute().actionGet();
brb.add(client.prepareUpdate(indexName, storename, docid).setScript(script.toString())); bulkrequests++;
.setScript(new Script( ScriptType.STORED, "painless",
@Override public void alterElementVisibility( Graph graph, Element element, Visibility oldVisibility, Visibility newVisibility, Authorizations authorizations ) { String oldFieldName = deflatePropertyName(graph, ELEMENT_TYPE_FIELD_NAME, oldVisibility); Script script = new Script( "ctx._source.remove(oldFieldName);", ScriptService.ScriptType.INLINE, null, ImmutableMap.<String, Object>of("oldFieldName", oldFieldName) ); getClient().prepareUpdate() .setIndex(getIndexName(element)) .setId(element.getId()) .setType(ELEMENT_TYPE) .setScript(script) .get(); addElement(graph, element, authorizations); }
.setScript(new Script( ScriptType.STORED, "painless",
private UpdateRequestBuilder buildUpdateRequestForReferencedFields(Entity parent, Entity child, boolean updateParent) { UpdateRequestBuilder urb = index.getClient() .prepareUpdate() .setIndex(index.getIndex(getLocalClass())) .setType(getLocalType()) .setRetryOnConflict(3) .setId(child.getId()); EntityDescriptor descriptor = index.getDescriptor(getLocalClass()); if (descriptor.hasRouting()) { Object routingKey = descriptor.getProperty(descriptor.getRouting()).writeToSource(child); if (Strings.isEmpty(routingKey)) { IndexAccess.LOG.WARN("Updating an entity of type %s (%s) without routing information!", child.getClass().getName(), child.getId()); } else { urb.setRouting(String.valueOf(routingKey)); } } Script script = computeUpdateScript(parent, updateParent); urb.setScript(script); if (IndexAccess.LOG.isFINE()) { IndexAccess.LOG.FINE("UPDATE: %s.%s: %s", index.getIndex(getLocalClass()), getLocalType(), script.toString()); } return urb; }