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); }
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); }
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(); }
new UpdateRequestBuilder(client, UpdateAction.INSTANCE).setIndex(indexName).setType(documentType) .setId(typeId);
new UpdateRequestBuilder(client, UpdateAction.INSTANCE).setIndex(indexName).setType(documentType) .setId(typeId);
.setIndex(getIndexName(element)) .setId(element.getId()) .setType(ELEMENT_TYPE) .setScript(script, ScriptService.ScriptType.INLINE) .setRetryOnConflict(MAX_RETRIES)
@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); }
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; }
UpdateRequest updateRequest = client.prepareUpdate() .setIndex(index) .setType(type) .setUpsert(indexRequest) .setSource(json)