Вы правы, что match
запросы могут использоваться для поиска без учета регистра, поскольку он применяет тот же анализатор, который использовался во время индексации, но работает только для поля text
.
Проблема в том, что во время индексирования, поскольку вы использовали поле keyword
, поэтому токены в инвертированном индексе elasticsearch, который используется для сопоставления токенов поискового запроса, не являются lowercased
, поэтому невозможно обеспечить поиск без учета регистра.
Давайте разберемся в приведенном выше утверждении на примере:
Предположим, у вас есть Foo BAR
в вашем документе, который вы проиндексировали с помощью поля keyword
. Обратите внимание на регистр каждого символа , так что инвертированный индекс будет иметь токен ниже.
Foo BAR
, теперь во время запроса каким-то обманом вы можете преобразовать поисковый запрос во все верхний или нижний регистр, но в этом случае он все равно не будет соответствовать токенам, поэтому у вас все равно будет много проблем с результатами поиска.
Я бы посоветовал добавить новое поле, в котором используется text
и используя reindex API , создайте индекс fre sh и реализуйте его чистым способом , также используя API переиндексации, вы можете построить новый индекс из старого индекса, и его намного быстрее построить новый индекс, а не построение из источника истины (SQL в большинстве случаев).