diff --git a/core/modules/views/config/schema/views.data_types.schema.yml b/core/modules/views/config/schema/views.data_types.schema.yml
index e69060d..60a099b 100644
--- a/core/modules/views/config/schema/views.data_types.schema.yml
+++ b/core/modules/views/config/schema/views.data_types.schema.yml
@@ -779,8 +779,12 @@ views_filter:
             - type: integer
               label: 'Default'
         group_items:
-          type: views.filter.group_items.[plugin_id]
+          type: sequence
           label: 'Group items'
+          sequence:
+            - type: views.filter.group_item.[%parent.%parent.%parent.plugin_id]
+              label: 'Group item'
+
     plugin_id:
       type: string
       label: 'Plugin ID'
@@ -788,21 +792,19 @@ views_filter:
       type: string
       label: 'Provider'
 
-views_filter_group_items:
-  type: sequence
-  sequence:
-    - type: mapping
-      label: 'Group item'
-      mapping:
-        title:
-          type: label
-          label: 'Label'
-        operator:
-          type: string
-          label: 'Operator'
-        value:
-          type: label
-          label: 'Value'
+views_filter_group_item:
+  type: mapping
+  label: 'Group item'
+  mapping:
+    title:
+      type: label
+      label: 'Label'
+    operator:
+      type: string
+      label: 'Operator'
+    value:
+      type: label
+      label: 'Value'
 
 views_relationship:
   type: mapping
diff --git a/core/modules/views/config/schema/views.filter.schema.yml b/core/modules/views/config/schema/views.filter.schema.yml
index 537ba81..97ec8a5 100644
--- a/core/modules/views/config/schema/views.filter.schema.yml
+++ b/core/modules/views/config/schema/views.filter.schema.yml
@@ -31,12 +31,12 @@ views.filter.combine:
         - type: string
           label: 'Field'
 
-views.filter.date:
-  type: views.filter.numeric
+views.filter_value.date:
+  type: views.filter_value.numeric
   label: 'Date'
 
-views.filter.groupby_numeric:
-  type: views.filter.numeric
+views.filter_value.groupby_numeric:
+  type: views.filter_value.numeric
   label: 'Group by numeric'
 
 views.filter.in_operator:
@@ -75,29 +75,22 @@ views.filter.string:
       type: string
       label: 'Value'
 
-views.filter.numeric:
-  type: views_filter
+views.filter_value.numeric:
+  type: mapping
   label: 'Numeric'
   mapping:
+    min:
+      type: string
+      label: 'Min'
+    max:
+      type: string
+      label: 'And max'
     value:
-      type: mapping
-      label: 'Operator'
-      mapping:
-        min:
-          type: string
-          label: 'Min'
-        max:
-          type: string
-          label: 'And max'
-        value:
-          type: string
-          label: 'Value'
-        type:
-          type: string
-          label: 'Value type'
+      type: string
+      label: 'Value'
 
-views.filter.equality:
-  type: views.filter.numeric
+views.filter_value.equality:
+  type: views.filter_value.numeric
   label: 'Equality'
 
 views.filter.many_to_one:
@@ -125,13 +118,12 @@ views.filter.group_items.*:
   type: views_filter_group_items
   label: 'Default'
 
-views.filter.group_items.string:
-  type: views_filter_group_items
-  label: 'String group items'
-
-views.filter.group_items.boolean:
+views.filter.group_items.numeric:
   type: views_filter_group_items
   label: 'Group items'
+  mapping:
+    value:
+      type: views.filter_value.numeric
 
 # Schema for the views filter value.
 
diff --git a/core/modules/views/src/Plugin/views/filter/Numeric.php b/core/modules/views/src/Plugin/views/filter/Numeric.php
index 38c0fca..ef4fb1d 100644
--- a/core/modules/views/src/Plugin/views/filter/Numeric.php
+++ b/core/modules/views/src/Plugin/views/filter/Numeric.php
@@ -184,9 +184,7 @@ protected function valueForm(&$form, FormStateInterface $form_state) {
       }
     }
     elseif ($which == 'value') {
-      // When exposed we drop the value-value and just do value if
-      // the operator is locked.
-      $form['value'] = array(
+      $form['value']['value'] = array(
         '#type' => 'textfield',
         '#title' => !$exposed ? $this->t('Value') : '',
         '#size' => 30,
@@ -231,7 +229,7 @@ protected function valueForm(&$form, FormStateInterface $form_state) {
 
       if (!isset($form['value'])) {
         // Ensure there is something in the 'value'.
-        $form['value'] = array(
+        $form['value']['value'] = array(
           '#type' => 'value',
           '#value' => NULL
         );
