diff -Nuar a/vendor/magento/module-catalog-search/Model/Advanced.php b/vendor/magento/module-catalog-search/Model/Advanced.php
index 5143762a07e..b498cb09e34 100644
--- a/vendor/magento/module-catalog-search/Model/Advanced.php
+++ b/vendor/magento/module-catalog-search/Model/Advanced.php
@@ -233,6 +233,11 @@ class Advanced extends \Magento\Framework\Model\AbstractModel
                     ? date('Y-m-d\TH:i:s\Z', strtotime($value['to']))
                     : '';
             }
+
+            if ($attribute->getAttributeCode() === 'sku') {
+                $value = mb_strtolower($value);
+            }
+
             $condition = $this->_getResource()->prepareCondition(
                 $attribute,
                 $value,
diff -Nuar a/vendor/magento/module-elasticsearch/Model/Adapter/FieldMapper/Product/FieldProvider/StaticField.php b/vendor/magento/module-elasticsearch/Model/Adapter/FieldMapper/Product/FieldProvider/StaticField.php
index 7a5d6fcdcc1..f0e9958546b 100644
--- a/vendor/magento/module-elasticsearch/Model/Adapter/FieldMapper/Product/FieldProvider/StaticField.php
+++ b/vendor/magento/module-elasticsearch/Model/Adapter/FieldMapper/Product/FieldProvider/StaticField.php
@@ -104,6 +104,7 @@ class StaticField implements FieldProviderInterface
      * @param array $context
      * @return array
      * @SuppressWarnings(PHPMD.UnusedFormalParameter)
+     * @SuppressWarnings(PHPMD.CyclomaticComplexity)
      */
     public function getFields(array $context = []): array
     {
@@ -120,6 +121,9 @@ class StaticField implements FieldProviderInterface
             $allAttributes[$fieldName] = [
                 'type' => $this->fieldTypeResolver->getFieldType($attributeAdapter),
             ];
+            if ($this->isNeedToAddCustomAnalyzer($fieldName) && $this->getCustomAnalyzer($fieldName)) {
+                $allAttributes[$fieldName]['analyzer'] = $this->getCustomAnalyzer($fieldName);
+            }
 
             $index = $this->fieldIndexResolver->getFieldIndex($attributeAdapter);
             if (null !== $index) {
@@ -174,4 +178,26 @@ class StaticField implements FieldProviderInterface
 
         return $allAttributes;
     }
+
+    /**
+     * Check is the custom analyzer exists for the field
+     *
+     * @param string $fieldName
+     * @return bool
+     */
+    private function isNeedToAddCustomAnalyzer(string $fieldName): bool
+    {
+        return $fieldName === 'sku';
+    }
+
+    /**
+     * Getter for the field custom analyzer if it's exists
+     *
+     * @param string $fieldName
+     * @return string|null
+     */
+    private function getCustomAnalyzer(string $fieldName): ?string
+    {
+        return $fieldName === 'sku' ? 'sku' : null;
+    }
 }
diff -Nuar a/vendor/magento/module-elasticsearch/Model/Adapter/Index/Builder.php b/vendor/magento/module-elasticsearch/Model/Adapter/Index/Builder.php
index 773faf49f8f..1cad781ad6d 100644
--- a/vendor/magento/module-elasticsearch/Model/Adapter/Index/Builder.php
+++ b/vendor/magento/module-elasticsearch/Model/Adapter/Index/Builder.php
@@ -8,6 +8,9 @@ namespace Magento\Elasticsearch\Model\Adapter\Index;
 use Magento\Framework\Locale\Resolver as LocaleResolver;
 use Magento\Elasticsearch\Model\Adapter\Index\Config\EsConfigInterface;
 
+/**
+ * Index Builder
+ */
 class Builder implements BuilderInterface
 {
     /**
@@ -40,7 +43,7 @@ class Builder implements BuilderInterface
     }
 
     /**
-     * {@inheritdoc}
+     * @inheritdoc
      */
     public function build()
     {
@@ -59,6 +62,14 @@ class Builder implements BuilderInterface
                             array_keys($filter)
                         ),
                         'char_filter' => array_keys($charFilter)
+                    ],
+                    'sku' => [
+                        'type' => 'custom',
+                        'tokenizer' => 'keyword',
+                        'filter' => array_merge(
+                            ['lowercase', 'keyword_repeat'],
+                            array_keys($filter)
+                        ),
                     ]
                 ],
                 'tokenizer' => $tokenizer,
@@ -71,7 +82,10 @@ class Builder implements BuilderInterface
     }
 
     /**
-     * {@inheritdoc}
+     * Setter for storeId property
+     *
+     * @param int $storeId
+     * @return void
      */
     public function setStoreId($storeId)
     {
@@ -79,47 +93,52 @@ class Builder implements BuilderInterface
     }
 
     /**
+     * Return tokenizer configuration
+     *
      * @return array
      */
     protected function getTokenizer()
     {
-        $tokenizer = [
+        return [
             'default_tokenizer' => [
-                'type' => 'standard',
-            ],
+                'type' => 'standard'
+            ]
         ];
-        return $tokenizer;
     }
 
     /**
+     * Return filter configuration
+     *
      * @return array
      */
     protected function getFilter()
     {
-        $filter = [
+        return [
             'default_stemmer' => $this->getStemmerConfig(),
             'unique_stem' => [
                 'type' => 'unique',
                 'only_on_same_position' => true
             ]
         ];
-        return $filter;
     }
 
     /**
+     * Return char filter configuration
+     *
      * @return array
      */
     protected function getCharFilter()
     {
-        $charFilter = [
+        return [
             'default_char_filter' => [
                 'type' => 'html_strip',
             ],
         ];
-        return $charFilter;
     }
 
     /**
+     * Return stemmer configuration
+     *
      * @return array
      */
     protected function getStemmerConfig()
