Есть ли способ, как я могу создать шаблон поиска Elasticsearch непосредственно из BoolQueryBuilder? - PullRequest
0 голосов
/ 10 ноября 2018

Как я могу легко создать шаблон поиска из BoolQueryBuilder на Java?

Сейчас я пытаюсь сделать это так, но это решение кажется мне немного грязным. Есть ли лучший способ?

BoolQueryBuilder boolQueryBuilder = new BoolQueryBuilder();
boolQueryBuilder.must(new MoreLikeThisQueryBuilder("myField", "{{myTextToBeReplaced}}", null));
SearchResponse response = new SearchTemplateRequestBuilder(client)
        .setRequest(new SearchRequest())
        .setScriptType(ScriptType.INLINE)
        .setScript(boolQueryBuilder.toString())
        .setScriptParams(templateParams)
        .get();

Спасибо за любую помощь.

1 Ответ

0 голосов
/ 11 ноября 2018

Вы выполняете встроенные шаблоны и даже используете boolQueryBuilder.toString () для рендеринга json вместо беспорядочной конкатенации строк. Хорошая работа до сих пор @ Druudik.

Но вы пробовали сохраненные шаблоны во время поиска (https://www.elastic.co/guide/en/elasticsearch/reference/current/search-template.html)? Это полностью выведет шаблон из вашего кода Java! Особенно для больших запросов такой подход уменьшает сложность кода.

Это также сделает ваше приложение более гибким, так как вы сможете изменить запрос / шаблон, без перекомпиляции кода (пока ваши параметры стабильны).

Вот несколько примеров использования Java API: https://www.elastic.co/guide/en/elasticsearch/client/java-api/current/java-search-template.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...