Если вы часто пишите запросы скорее всего у вас один и тот же запрос повторяется большое количество раз. И конечно можно упростить использование таких запросов применяя шаблоны поиска.

Вы просто создаёте шаблон с запросом и далее используете его при поиске передавая в этот шаблон параметры. Я бы просто назвал это скриптом.

Создание шаблона

Для создания шаблона поиска используется _scripts.

POST _scripts/my-search-template 
{
  "script": {
    "lang": "mustache",
    "source": {
      "query": {
        "match": {
          "": ""
        }
      }
    }
  }
}
  • my-search-template - имя шаблона
  • lang - язык скрипта. Список всех языков тут
  • **, ** - переменные, которые будут передаваться при поиске

Использование шаблона

Если вы хотите вызвать шаблон поиска, вы просто используете конечную точку _search / template и в теле запроса.

GET my-index/_search/template
{
  "id": "my-search-template",
  "params": {
    "my_field": "title",
    "my_value": "elk"
  }  
}

Пустые значения для переменных

Естественно рано или поздно вы придёте к пустым значениям в переменных для шаблона поиска.

Для того чтобы не использовать значение в поиске если оно пустое скрываем его.

POST _scripts/my-search-template 
{
  "script": {
    "lang": "mustache",
    "source": {
      "query": {
        "match": {
          "title": ""
        }
		
		,
        "filter": {
          "range": {
	        "date": {"gte": ""}
	      }
	    }
		
      }
    }
  }
}
  • **, ** - если значение date пустое, то не выполняем данный блок.