diff --git a/erpnext/e_commerce/doctype/e_commerce_settings/e_commerce_settings.py b/erpnext/e_commerce/doctype/e_commerce_settings/e_commerce_settings.py
index ece60d4..1ff3152 100644
--- a/erpnext/e_commerce/doctype/e_commerce_settings/e_commerce_settings.py
+++ b/erpnext/e_commerce/doctype/e_commerce_settings/e_commerce_settings.py
@@ -7,7 +7,7 @@
 from frappe import _, msgprint
 from frappe.model.document import Document
 from frappe.utils import unique
-from erpnext.e_commerce.redisearch import create_website_items_index, ALLOWED_INDEXABLE_FIELDS_SET, is_search_module_loaded
+from erpnext.e_commerce.redisearch import create_website_items_index, get_indexable_web_fields, is_search_module_loaded
 
 class ShoppingCartSetupError(frappe.ValidationError): pass
 
@@ -57,8 +57,10 @@
 		fields = unique(fields.strip(',').split(',')) # Remove extra ',' and remove duplicates
 
 		# All fields should be indexable
-		if not (set(fields).issubset(ALLOWED_INDEXABLE_FIELDS_SET)):
-			invalid_fields = list(set(fields).difference(ALLOWED_INDEXABLE_FIELDS_SET))
+		allowed_indexable_fields = get_indexable_web_fields()
+
+		if not (set(fields).issubset(allowed_indexable_fields)):
+			invalid_fields = list(set(fields).difference(allowed_indexable_fields))
 			num_invalid_fields = len(invalid_fields)
 			invalid_fields = comma_and(invalid_fields)
 
diff --git a/erpnext/e_commerce/redisearch.py b/erpnext/e_commerce/redisearch.py
index 9dac40f..d0626a3 100644
--- a/erpnext/e_commerce/redisearch.py
+++ b/erpnext/e_commerce/redisearch.py
@@ -19,9 +19,6 @@
 
 	return [df.fieldname for df in valid_fields]
 
-ALLOWED_INDEXABLE_FIELDS_SET = get_indexable_web_fields()
-
-
 def is_search_module_loaded():
 	cache = frappe.cache()
 	out = cache.execute_command('MODULE LIST')
diff --git a/erpnext/patches/v13_0/create_website_items.py b/erpnext/patches/v13_0/create_website_items.py
index a8bdc5c..fa03962 100644
--- a/erpnext/patches/v13_0/create_website_items.py
+++ b/erpnext/patches/v13_0/create_website_items.py
@@ -13,12 +13,12 @@
 	item_table_fields = frappe.db.sql("desc `tabItem`", as_dict=1)
 	item_table_fields = [d.get('Field') for d in item_table_fields]
 
-	# prepare fields to query from Item, check if the field exists in Item master
+	# prepare fields to query from Item, check if the web field exists in Item master
 	web_query_fields = []
-	for field in web_fields_to_map:
-		if field in item_table_fields:
-			web_query_fields.append(field)
-			item_fields.append(field)
+	for web_field in web_fields_to_map:
+		if web_field in item_table_fields:
+			web_query_fields.append(web_field)
+			item_fields.append(web_field)
 
 	# check if the filter fields exist in Item master
 	or_filters = {}
@@ -37,6 +37,7 @@
 		or_filters=or_filters
 	)
 
+	count = 0
 	for item in items:
 		if frappe.db.exists("Website Item", {"item_code": item.item_code}):
 			continue
@@ -59,5 +60,9 @@
 					parent = '{web_item}'
 				where
 					parenttype = 'Item'
-					and parent = '{item}'
-				""")
\ No newline at end of file
+					and parent = '{item_code}'
+				""")
+
+		count += 1
+		if count % 20 == 0: # commit after every 20 items
+			frappe.db.commit()
