2014-09-14 2 views
4

Я пытался реализовать функцию запроса шаблона. См. Последний раздел: http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-template.htmlelasticsearch | запрос шаблона | java API

Я добавил шаблон запроса, используя смысл. Теперь нужно через JAVA API elasticsearch, мне нужно выполнить этот шаблон запроса и сохранить результат в SearchResponse. Однако я не могу найти API, связанный с шаблоном запроса. Единственный файл класса, который доступен, - TemplateQueryBuilder. Этот класс идеально строит запрос шаблона, но я не уверен, какой метод вызывается из Client, чтобы передать объект TemplateQueryBuilder. Помощь в этом оценивается.

ответ

2

Вот как это сделать:

SearchRequestBuilder request = client;.prepareSearch(); 
request.setTemplateName(templateName); 
request.setTemplateType(ScriptService.ScriptType.INDEXED); 
request.setTemplateParams(templateParams); 
SearchResponse response = request.get(); 

Вам просто нужно разобрать объект ответа, то ..

см: http://www.elasticsearch.org/guide/en/elasticsearch/client/java-api/current/search.html#java-search-template

0

Обратите внимание, что с версией API 2.X, поскольку методы request.setTemplateX устарели, вы должны использовать другой подход. Либо вы можете использовать request.setTemplate(Template template), который похож на принятый ответ, или вы можете пойти с более общим подходом QueryBuilders:

QueryBuilder qb = QueryBuilders.templateQuery(
    "templateName", 
    ScriptService.ScriptType.FILE, 
    templateParams); 

Больше читать: https://www.elastic.co/guide/en/elasticsearch/client/java-api/2.4/java-specialized-queries.html#java-query-dsl-template-query

Смежные вопросы