【问题标题】:Is there any way how can I create Elasticsearch Search Template from BoolQueryBuilder directly?有什么方法可以直接从 BoolQueryBuilder 创建 Elasticsearch 搜索模板?
【发布时间】:2018-11-10 12:34:10
【问题描述】:

如何在 Java 中从 BoolQueryBuilder 轻松创建搜索模板?

现在我正在尝试这样做,但这个解决方案对我来说似乎有点脏。有没有更好的办法?

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();

感谢您的帮助。

【问题讨论】:

    标签: java templates elasticsearch


    【解决方案1】:

    您正在执行内联模板,甚至使用 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

    【讨论】:

      猜你喜欢
      • 2021-05-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多