diff --git a/src/box/field_def.c b/src/box/field_def.c
index e4aee76fe9cb7ea4c39de5fe3469476363c2c329..be99dd518f0958dd110138ae5bbfca18af42eb1d 100644
--- a/src/box/field_def.c
+++ b/src/box/field_def.c
@@ -36,10 +36,11 @@ const char *field_type_strs[] = {
 	/* [FIELD_TYPE_ANY]      = */ "any",
 	/* [FIELD_TYPE_UNSIGNED] = */ "unsigned",
 	/* [FIELD_TYPE_STRING]   = */ "string",
-	/* [FIELD_TYPE_ARRAY]    = */ "array",
 	/* [FIELD_TYPE_NUMBER]   = */ "number",
 	/* [FIELD_TYPE_INTEGER]  = */ "integer",
 	/* [FIELD_TYPE_SCALAR]   = */ "scalar",
+	/* [FIELD_TYPE_ARRAY]    = */ "array",
+	/* [FIELD_TYPE_MAP]      = */ "map",
 };
 
 enum field_type
diff --git a/src/box/field_def.h b/src/box/field_def.h
index 756676f56f2a786d495d6eefa945fdda191d39b4..7970c216fd183de1fb32c78c4e81eaac62e8f7f5 100644
--- a/src/box/field_def.h
+++ b/src/box/field_def.h
@@ -46,10 +46,11 @@ enum field_type {
 	FIELD_TYPE_ANY = 0,
 	FIELD_TYPE_UNSIGNED,
 	FIELD_TYPE_STRING,
-	FIELD_TYPE_ARRAY,
 	FIELD_TYPE_NUMBER,
 	FIELD_TYPE_INTEGER,
 	FIELD_TYPE_SCALAR,
+	FIELD_TYPE_ARRAY,
+	FIELD_TYPE_MAP,
 	field_type_MAX
 };
 
diff --git a/src/box/key_def.cc b/src/box/key_def.cc
index 7db87ee228af5f4b925dbd2845daeab903923445..725abfa12c803ab5d61ae91e7dc7a29536279c30 100644
--- a/src/box/key_def.cc
+++ b/src/box/key_def.cc
@@ -52,13 +52,14 @@ const uint32_t key_mp_type[] = {
 	/* [FIELD_TYPE_ANY]      =  */ UINT32_MAX,
 	/* [FIELD_TYPE_UNSIGNED] =  */ 1U << MP_UINT,
 	/* [FIELD_TYPE_STRING]   =  */ 1U << MP_STR,
-	/* [FIELD_TYPE_ARRAY]    =  */ 1U << MP_ARRAY,
 	/* [FIELD_TYPE_NUMBER]   =  */ (1U << MP_UINT) | (1U << MP_INT) |
 		(1U << MP_FLOAT) | (1U << MP_DOUBLE),
 	/* [FIELD_TYPE_INTEGER]  =  */ (1U << MP_UINT) | (1U << MP_INT),
 	/* [FIELD_TYPE_SCALAR]   =  */ (1U << MP_UINT) | (1U << MP_INT) |
 		(1U << MP_FLOAT) | (1U << MP_DOUBLE) | (1U << MP_STR) |
 		(1U << MP_BIN) | (1U << MP_BOOL),
+	/* [FIELD_TYPE_ARRAY]    =  */ 1U << MP_ARRAY,
+	/* [FIELD_TYPE_MAP]      =  */ (1U << MP_MAP),
 };
 
 struct key_def *