Skip to content

Documents ​

Update ​

bash
php bin\console emscli:documents:update --help
Description:
  Update documents form excel or csv with custom configuration

Usage:
  emscli:documents:update [options] [--] <config-file-path> <data-file-path>

Arguments:
  config-file                        Config file
  data-file                          Data file

Options:
      --data-offset=DATA-OFFSET            Offset data [default: 0]
      --data-length=DATA-LENGTH            Length data to parse
      --data-skip-first[=DATA-SKIP-FIRST]  Skip data header [default: true]
      --dry-run                            Skip updating documents [default: false]

Arguments ​

NameDescription
config-filepath to the config
data-filepath to the data file (excel or csv)

Options ​

NameDescription
data-offsetAfter the data is loading we can provide a offset (is uses \array_slice)
data-lengthAfter the data is loading we can provide a length (is uses \array_slice)
data-skip-firstIf the data file contains a header row, also needed when using offset.

Update Config file ​

Option (path)Description
update.contentType [required]The target contentType for updating
update.indexEmsId [required]The column index that contains the ouuid for updating. (first = 0)
update.collectionFieldData, for a same ouuid, are saved as collection for the given field
update.mapping[]Provide a mapping array between document and data file
update.mapping[].fieldThe document field name
update.mapping[].indexDataColumnThe data value column index (first = 0)
dataColumns[]see data columns

Example update page contentType ​

  • The first column (0) contains a valid emsId (page:ouuid)
  • The second column (1) equals the update value for the page title field.
  • The third column (2) equals the update value for the page description field.
json
{
    "update": {
        "contentType": "page",
        "indexEmsId": 0,
        "mapping": [
            { "field": "title", "indexDataColumn": 1 },
            { "field": "description", "indexDataColumn": 2 }
        ]
    }
}

Update config data columns ​

Provide dataColumns for transforming the provided data by row.

BusinessId dataColumn ​

DataColumn of the type businessId are used for replacing business data by valid emsId. Necessary if the data file does not contain emsIds for update.indexEmsId or update.mapping[].indexDataColumn

OptionDescription
dataColumns[].index [required]the column index in the data file (starts a 0)
dataColumns[].type [required]businessId
dataColumns[].contentType [required]the data value comes from this contentType
dataColumns[].field [required]the data value comes from this field inside the contentType
dataColumns[].scrollSize [default=1000]for performance we scroll overall documents and build an internal array
dataColumns[].scrollMust [default=null]add a must query for scrolling
dataColumns[].removeNotFound [default=false]after transforming remove all not valid emsIds
Example ​

Data file contains products and new category codes. The first column (0) contains the product code and the 4th column contains a category code.

For updating the products we need an emsId for the products and category (dataLink). The data can contain not existing category codes, do not update them (removeNotFound=true). Also the example will only update active products by the scrollMust option.

json
{
    "update": {
        "contentType": "product",
        "indexEmsId": 0,
        "mapping": [{ "field": "category", "indexDataColumn": 3 }]
    },
    "dataColumns": [
        {
            "index": 0,
            "type": "businessId",
            "field": "code",
            "contentType": "product",
            "removeNotFound": true,
            "scrollSize": 2000,
            "scrollMust": [{ "term": { "active": { "value": true } } }]
        },
        {
            "index": 3,
            "type": "businessId",
            "field": "code",
            "contentType": "product_category",
            "scrollSize": 2000,
            "removeNotFound": true
        }
    ]
}