docs: private void subTableSimpleFieldOperation(ESSyncConfig config, Dml dml, Map<String, Object> data,
                                                Map<String, Object> old, TableItem tableItem) {
          ESMapping mapping = config.getEsMapping();
          StringBuilder sql = new StringBuilder(
              "SELECT * FROM (" + tableItem.getSubQuerySql() + ") " + tableItem.getAlias() + " WHERE ");
  
          for (FieldItem fkFieldItem : tableItem.getRelationTableFields().keySet()) {
              String columnName = fkFieldItem.getColumn().getColumnName();
              Object value = esTemplate.getValFromData(mapping, data, fkFieldItem.getFieldName(), columnName);
              ESSyncUtil.appendCondition(sql, value, tableItem.getAlias(), columnName);
          }
          int len = sql.length();
          sql.delete(len - 5, len);
          DataSource ds = DatasourceConfig.DATA_SOURCES.get(config.getDataSourceKey());
          if (logger.isTraceEnabled()) {
              logger.trace("Join table update es index by query sql, destination:{}, table: {}, index: {}, sql: {}",
                  config.getDestination(),
                  dml.getTable(),
                  mapping.get_index(),
                  sql.toString().replace("\n", " "));
          }
          Util.sqlRS(ds, sql.toString(), rs -> {
              try {
                  while (rs.next()) {
                      Map<String, Object> esFieldData = new LinkedHashMap<>();
  
                      for (FieldItem fieldItem : tableItem.getRelationSelectFieldItems()) {
                          if (old != null) {
                              out: for (FieldItem fieldItem1 : tableItem.getSubQueryFields()) {
                                  for (ColumnItem columnItem0 : fieldItem.getColumnItems()) {
                                      if (fieldItem1.getFieldName().equals(columnItem0.getColumnName()))
                                          for (ColumnItem columnItem : fieldItem1.getColumnItems()) {
                                              if (old.containsKey(columnItem.getColumnName())) {
                                                  Object val = esTemplate.getValFromRS(mapping,
                                                      rs,
                                                      fieldItem.getFieldName(),
                                                      fieldItem.getColumn().getColumnName());
                                                  esFieldData.put(Util.cleanColumn(fieldItem.getFieldName()), val);
                                                  break out;
                                              }
                                          }
                                  }
                              }
                          } else {
                              Object val = esTemplate.getValFromRS(mapping,
                                  rs,
                                  fieldItem.getFieldName(),
                                  fieldItem.getColumn().getColumnName());
                              esFieldData.put(Util.cleanColumn(fieldItem.getFieldName()), val);
                          }
                      }
  
                      Map<String, Object> paramsTmp = new LinkedHashMap<>();
                      for (Map.Entry<FieldItem, List<FieldItem>> entry : tableItem.getRelationTableFields().entrySet()) {
                          for (FieldItem fieldItem : entry.getValue()) {
                              if (fieldItem.getColumnItems().size() == 1) {
                                  Object value = esTemplate.getValFromRS(mapping,
                                      rs,
                                      fieldItem.getFieldName(),
                                      entry.getKey().getColumn().getColumnName());
                                  String fieldName = fieldItem.getFieldName();
                                  // 判断是否是主键
                                  if (fieldName.equals(mapping.get_id())) {
                                      fieldName = "_id";
                                  }
                                  paramsTmp.put(fieldName, value);
                              }
                          }
                      }
  
                      if (logger.isDebugEnabled()) {
                          logger.trace("Join table update es index by query sql, destination:{}, table: {}, index: {}",
                              config.getDestination(),
                              dml.getTable(),
                              mapping.get_index());
                      }
                      esTemplate.updateByQuery(config, paramsTmp, esFieldData);
                  }
              } catch (Exception e) {
                  throw new RuntimeException(e);
              }
              return 0;
          });
      }