docs: private void delete(ESSyncConfig config, Dml dml) {
          List<Map<String, Object>> dataList = dml.getData();
          if (dataList == null || dataList.isEmpty()) {
              return;
          }
          SchemaItem schemaItem = config.getEsMapping().getSchemaItem();
  
          for (Map<String, Object> data : dataList) {
              if (data == null || data.isEmpty()) {
                  continue;
              }
  
              ESMapping mapping = config.getEsMapping();
  
              // ------是主表------
              if (schemaItem.getMainTable().getTableName().equalsIgnoreCase(dml.getTable())) {
                  if (mapping.get_id() != null) {
                      FieldItem idFieldItem = schemaItem.getIdFieldItem(mapping);
                      // 主键为简单字段
                      if (!idFieldItem.isMethod() && !idFieldItem.isBinaryOp()) {
                          Object idVal = esTemplate.getValFromData(mapping,
                              data,
                              idFieldItem.getFieldName(),
                              idFieldItem.getColumn().getColumnName());
  
                          if (logger.isTraceEnabled()) {
                              logger.trace("Main table delete es index, destination:{}, table: {}, index: {}, id: {}",
                                  config.getDestination(),
                                  dml.getTable(),
                                  mapping.get_index(),
                                  idVal);
                          }
                          esTemplate.delete(mapping, idVal, null);
                      } else {
                          // ------主键带函数, 查询sql获取主键删除------
                          // FIXME 删除时反查sql为空记录, 无法获获取 id field 值
                          mainTableDelete(config, dml, data);
                      }
                  } else {
                      FieldItem pkFieldItem = schemaItem.getIdFieldItem(mapping);
                      if (!pkFieldItem.isMethod() && !pkFieldItem.isBinaryOp()) {
                          Map<String, Object> esFieldData = new LinkedHashMap<>();
                          Object pkVal = esTemplate.getESDataFromDmlData(mapping, data, esFieldData);
  
                          if (logger.isTraceEnabled()) {
                              logger.trace("Main table delete es index, destination:{}, table: {}, index: {}, pk: {}",
                                  config.getDestination(),
                                  dml.getTable(),
                                  mapping.get_index(),
                                  pkVal);
                          }
                          esFieldData.remove(pkFieldItem.getFieldName());
                          esFieldData.keySet().forEach(key -> esFieldData.put(key, null));
                          esTemplate.delete(mapping, pkVal, esFieldData);
                      } else {
                          // ------主键带函数, 查询sql获取主键删除------
                          mainTableDelete(config, dml, data);
                      }
                  }
  
              }
  
              // 从表的操作
              for (TableItem tableItem : schemaItem.getAliasTableItems().values()) {
                  if (tableItem.isMain()) {
                      continue;
                  }
                  if (!tableItem.getTableName().equals(dml.getTable())) {
                      continue;
                  }
  
                  // 关联条件出现在主表查询条件是否为简单字段
                  boolean allFieldsSimple = true;
                  for (FieldItem fieldItem : tableItem.getRelationSelectFieldItems()) {
                      if (fieldItem.isMethod() || fieldItem.isBinaryOp()) {
                          allFieldsSimple = false;
                          break;
                      }
                  }
  
                  // 所有查询字段均为简单字段
                  if (allFieldsSimple) {
                      // 不是子查询
                      if (!tableItem.isSubQuery()) {
                          // ------关联表简单字段更新为null------
                          Map<String, Object> esFieldData = new LinkedHashMap<>();
                          for (FieldItem fieldItem : tableItem.getRelationSelectFieldItems()) {
                              esFieldData.put(Util.cleanColumn(fieldItem.getFieldName()), null);
                          }
                          joinTableSimpleFieldOperation(config, dml, data, tableItem, esFieldData);
                      } else {
                          // ------关联子表简单字段更新------
                          subTableSimpleFieldOperation(config, dml, data, null, tableItem);
                      }
                  } else {
                      // ------关联子表复杂字段更新 执行全sql更新es------
                      wholeSqlOperation(config, dml, data, null, tableItem);
                  }
              }
          }
      }