diff --git a/erpnext/e_commerce/doctype/e_commerce_settings/e_commerce_settings.json b/erpnext/e_commerce/doctype/e_commerce_settings/e_commerce_settings.json
index 36177ff..94560eb 100644
--- a/erpnext/e_commerce/doctype/e_commerce_settings/e_commerce_settings.json
+++ b/erpnext/e_commerce/doctype/e_commerce_settings/e_commerce_settings.json
@@ -48,7 +48,9 @@
   "item_search_settings_section",
   "search_index_fields",
   "show_categories_in_search_autocomplete",
-  "show_brand_line"
+  "show_brand_line",
+  "is_redisearch_loaded",
+  "redisearch"
  ],
  "fields": [
   {
@@ -328,12 +330,26 @@
    "fieldname": "show_brand_line",
    "fieldtype": "Check",
    "label": "Show Brand Line"
+  },
+  {
+   "default": "0",
+   "fieldname": "is_redisearch_loaded",
+   "fieldtype": "Check",
+   "hidden": 1,
+   "label": "Is Redisearch Loaded"
+  },
+  {
+   "depends_on": "eval:doc.is_search_module_loaded",
+   "fieldname": "redisearch",
+   "fieldtype": "Heading",
+   "label": "Redisearch",
+   "options": "Some heading"
   }
  ],
  "index_web_pages_for_search": 1,
  "issingle": 1,
  "links": [],
- "modified": "2021-05-05 13:41:11.483232",
+ "modified": "2021-05-26 20:00:35.399936",
  "modified_by": "Administrator",
  "module": "E-commerce",
  "name": "E Commerce Settings",
diff --git a/erpnext/e_commerce/website_item_indexing.py b/erpnext/e_commerce/website_item_indexing.py
index 134939c..3b82a32 100644
--- a/erpnext/e_commerce/website_item_indexing.py
+++ b/erpnext/e_commerce/website_item_indexing.py
@@ -10,6 +10,26 @@
         TextField, TagField
 	)
 
+def is_search_module_loaded():
+    cache = frappe.cache()
+    out = cache.execute_command('MODULE LIST')
+
+    parsed_output = " ".join(
+        (" ".join([s.decode() for s in o if not isinstance(s, int)]) for o in out)
+    )
+
+    return "search" in parsed_output
+
+# Decorator for checking wether Redisearch is there or not
+def redisearch_decorator(function):
+    def wrapper(*args, **kwargs):
+        if is_search_module_loaded():
+            func = function(*args, **kwargs)
+            return func
+        return
+
+    return wrapper 
+
 def make_key(key):
 	return "{0}|{1}".format(frappe.conf.db_name, key).encode('utf-8')
 
@@ -28,6 +48,7 @@
 	'web_long_description'
 }
 
+@redisearch_decorator
 def create_website_items_index():
 	'''Creates Index Definition'''
 	# CREATE index
@@ -67,6 +88,7 @@
 
 	return TextField(field)
 
+@redisearch_decorator
 def insert_item_to_index(website_item_doc):
 	# Insert item to index
 	key = get_cache_key(website_item_doc.name)
@@ -78,6 +100,7 @@
 
 	insert_to_name_ac(website_item_doc.web_item_name, website_item_doc.name)
 
+@redisearch_decorator
 def insert_to_name_ac(web_name, doc_name):
 	ac = AutoCompleter(make_key(WEBSITE_ITEM_NAME_AUTOCOMPLETE), conn=frappe.cache())
 	ac.add_suggestions(Suggestion(web_name, payload=doc_name))
@@ -91,12 +114,14 @@
 		web_item[f] = website_item_doc.get(f) or ''
 
 	return web_item
-	
+
+@redisearch_decorator
 def update_index_for_item(website_item_doc):
 	# Reinsert to Cache
 	insert_item_to_index(website_item_doc)
 	define_autocomplete_dictionary()
 
+@redisearch_decorator
 def delete_item_from_index(website_item_doc):
 	r = frappe.cache()
 	key = get_cache_key(website_item_doc.name)
@@ -110,12 +135,14 @@
 
 	return True
 
+@redisearch_decorator
 def delete_from_ac_dict(website_item_doc):
 	'''Removes this items's name from autocomplete dictionary'''
 	r = frappe.cache()
 	name_ac = AutoCompleter(make_key(WEBSITE_ITEM_NAME_AUTOCOMPLETE), conn=r)
 	name_ac.delete(website_item_doc.web_item_name)
 
+@redisearch_decorator
 def define_autocomplete_dictionary():
 	"""Creates an autocomplete search dictionary for `name`.
 	   Also creats autocomplete dictionary for `categories` if 
@@ -150,6 +177,7 @@
 
 	return True
 
+@redisearch_decorator
 def reindex_all_web_items():
 	items = frappe.get_all(
 		'Website Item', 
