diff --git contrib/search_api_views/search_api_views.install contrib/search_api_views/search_api_views.install
index e908a49..05e1493 100644
--- contrib/search_api_views/search_api_views.install
+++ contrib/search_api_views/search_api_views.install
@@ -6,3 +6,88 @@
 function search_api_views_uninstall() {
   variable_del('search_api_views_max_fields_depth');
 }
+
+/**
+ * Updates all Search API views to use the new, specification-compliant identifiers.
+ */
+function search_api_views_update_7101() {
+  $tables = views_fetch_data();
+  // Contains arrays with real fields mapped to field IDs for each table.
+  $table_fields = array();
+  foreach ($tables as $key => $table) {
+    if (substr($key, 0, 17) != 'search_api_index_') {
+      continue;
+    }
+    foreach ($table as $field => $info) {
+      if (isset($info['real field']) && $field != $info['real field']) {
+        $table_fields[$key][$info['real field']] = $field;
+      }
+    }
+  }
+  if (!$table_fields) {
+    return;
+  }
+  foreach (views_get_all_views() as $name => $view) {
+    if (empty($view->base_table) || empty($table_fields[$view->base_table])) {
+      continue;
+    }
+    $change = FALSE;
+    $fields = $table_fields[$view->base_table];
+    $change |= _search_api_views_update_7101_helper($view->base_field, $fields);
+    if (!empty($view->display)) {
+      foreach ($view->display as $key => &$display) {
+        $options = &$display->display_options;
+        if (isset($options['style_options']['grouping'])) {
+          $change |= _search_api_views_update_7101_helper($options['style_options']['grouping'], $fields);
+        }
+        if (isset($options['style_options']['columns'])) {
+          $change |= _search_api_views_update_7101_helper($options['style_options']['columns'], $fields);
+        }
+        if (isset($options['style_options']['info'])) {
+          $change |= _search_api_views_update_7101_helper($options['style_options']['info'], $fields);
+        }
+        if (isset($options['arguments'])) {
+          $change |= _search_api_views_update_7101_helper($options['arguments'], $fields);
+        }
+        if (isset($options['fields'])) {
+          $change |= _search_api_views_update_7101_helper($options['fields'], $fields);
+        }
+        if (isset($options['filters'])) {
+          $change |= _search_api_views_update_7101_helper($options['filters'], $fields);
+        }
+        if (isset($options['sorts'])) {
+          $change |= _search_api_views_update_7101_helper($options['sorts'], $fields);
+        }
+      }
+    }
+    if ($change) {
+      $view->save();
+    }
+  }
+}
+
+/**
+ * Helper function for replacing field identifiers.
+ *
+ * @return
+ *   TRUE iff the identifier was changed.
+ */
+function _search_api_views_update_7101_helper(&$field, array $fields) {
+  if (is_array($field)) {
+    $change = FALSE;
+    $new_field = array();
+    foreach ($field as $k => $v) {
+      $new_k = $k;
+      $change |= _search_api_views_update_7101_helper($new_k, $fields);
+      $change |= _search_api_views_update_7101_helper($v, $fields);
+      $new_field[$new_k] = $v;
+    }
+    $field = $new_field;
+    return $change;
+  }
+  if (isset($fields[$field])) {
+    $field = $fields[$field];
+    return TRUE;
+  }
+  return FALSE;
+}
diff --git contrib/search_api_views/search_api_views.views.inc contrib/search_api_views/search_api_views.views.inc
index 2761a70..940a4e0 100644
--- contrib/search_api_views/search_api_views.views.inc
+++ contrib/search_api_views/search_api_views.views.inc
@@ -54,21 +54,17 @@ function search_api_views_views_data() {
         }
         // Now look at all properties.
         foreach ($wrapper as $property => $value) {
+          $field = $prefix . $property;
+          $key = _search_api_views_field_identifier($field, $table);
           $info = $value->info();
           // Some fields of contrib entities might have incomplete definitions.
-          $info += array('label' => $key);
+          $info += array('label' => $field);
           $type = $type_prefix . $info['type'] . $type_suffix;
           $inner_type = search_api_extract_inner_type($info['type']);
           if ($inner_type == 'token') {
             $inner_type = 'string';
             $type = search_api_nest_type('string', $type);
           }
-          $key = $prefix . $property;
-          if ($key == 'table') {
-            // We can't add a "table" field since that would overwrite the table
-            // information. For the moment, we just don't add such a field.
-            continue;
-          }
           if (isset($types[$inner_type])) {
             if ($value->optionsList('view')) {
               $inner_type = 'options';
@@ -79,6 +75,9 @@ function search_api_views_views_data() {
               $table[$key]['group'] = $prefix_name;
             }
             $table[$key]['title'] = $info['label'];
+            if ($key != $field) {
+              $table[$key]['real field'] = $field;
+            }
             $table[$key]['help'] = empty($info['description']) ? t('(No information available)') : $info['description'];
             $table[$key]['type'] = $type;
             $table[$key]['field']['handler'] = _search_api_views_field_handler($type, $inner_type);
@@ -87,23 +86,23 @@ function search_api_views_views_data() {
             }
 
             // If field is indexed, also add additional handlers.
-            if (!empty($fields[$key]['indexed'])) {
+            if (!empty($fields[$field]['indexed'])) {
               // Discern between original and indexed type
               $table[$key]['field']['type'] = $table[$key]['type'];
-              $table[$key]['type'] = $fields[$key]['type'];
-              $table[$key] += _search_api_views_add_handlers($fields[$key], $value);
+              $table[$key]['type'] = $fields[$field]['type'];
+              $table[$key] += _search_api_views_add_handlers($fields[$field], $value);
               if (!empty($table[$key]['sort'])) {
                 $table[$key]['field']['click sortable'] = TRUE;
               }
             }
-            unset($fields[$key]);
+            unset($fields[$field]);
           }
           elseif ($depth < $max_depth) {
             // Visit this entity/struct in a later iteration.
-            $key .= ':';
-            $wrappers[$key] = $value;
-            $prefix_names[$key] = $prefix_name ? $prefix_name . ' » ' . $info['label'] : $info['label'];
-            $nesting_levels[$key] = search_api_list_nesting_level($type);
+            $field .= ':';
+            $wrappers[$field] = $value;
+            $prefix_names[$field] = $prefix_name ? $prefix_name . ' » ' . $info['label'] : $info['label'];
+            $nesting_levels[$field] = search_api_list_nesting_level($type);
           }
         }
         unset($wrappers[$prefix]);
@@ -135,13 +134,14 @@ function search_api_views_views_data() {
           }
         }
       }
+      $id = _search_api_views_field_identifier($key, $table);
       if ($group) {
-        $table[$key]['group'] = $group;
+        $table[$id]['group'] = $group;
       }
-      $table[$key]['title'] = $name;
-      $table[$key]['help'] = empty($info['description']) ? NULL : $info['description'];
-      $table[$key]['type'] = $field['type'];
-      $table[$key] += _search_api_views_add_handlers($field, $tmp);
+      $table[$id]['title'] = $name;
+      $table[$id]['help'] = empty($info['description']) ? NULL : $info['description'];
+      $table[$id]['type'] = $field['type'];
+      $table[$id] += _search_api_views_add_handlers($field, $tmp);
     }
 
     // Special handlers
@@ -169,6 +169,21 @@ function search_api_views_views_data() {
 }
 
 /**
+ * Helper function for creating valid Views field identifiers out of Search API field names.
+ *
+ * @return string
+ *   A valid Views field identifier that isn't yet used as a key in $table.
+ */
+function _search_api_views_field_identifier($field, array $table) {
+  $key = $base = preg_replace('/[^a-zA-Z0-9]+/S', '_', $field);
+  $i = 0;
+  while (isset($table[$key])) {
+    $key = $base . '_' . ++$i;
+  }
+  return $key;
+}
+
+/**
  * Helper function for selecting a handler for a field of a specific type.
  */
 function _search_api_views_field_handler($type, $inner_type) {
