Ваш первый запрос не возвращает результатов, потому что вы не используете поиск по шаблону, который вы не смогли бы сделать, даже если бы захотели, потому что "match" не поддерживает символы подстановки.:) Используйте это вместо:
{"query":{"bool":{"must":[{"wildcard":{"name":"*ka*"}},{"term":{"kind":"k1"}}]}}}
Ваш последний запрос возвращает эти результаты, потому что вы сохраняете электронную почту как проанализированную строку, а стандартный анализатор разбивает строки на пробелы и знаки пунктуации.Это замечательно, когда вы индексируете "привет, мир" и можете найти совпадения для "привет" и "мир".Но это также означает, что «testname@gmail.com» рассматривается как три слова - «testname», «gmail» и «com».
Для исправления этой проблемы необходимо, чтобы в вашем отображении была определена «электронная почта» как неанализированная строка.Если вы не используете v5.0 или выше, в этом случае - хорошие новости!У вас уже есть поле «ключевое слово», которое не анализируется, и следующий запрос по волшебству просто будет работать для вас:
{"query": {"bool": {"must": [{ "match":{"email.keyword":"testname@gmail.com"}}]}}}