首页 > 解决方案 > 如何通过Java代码创建或更新elasticsearch的搜索模板

问题描述

我正在使用POST /_search/template/search通过 Postman创建的以下弹性搜索查询

{
    "template": {
  "query": {
    "bool": {
      "should": [
        {
          "nested": {
            "path": "paymentAccounts",
            "query": {
              "bool": {
                "should": [
                  {
                    "nested": {
                      "path": "accounts",
                      "query": {
                        "bool": {
                          "should": [
                           {
                             "wildcard": {
                              "accounts.person.email.keyword": "*{{smartsearchquerystring}}*"
                              }
                            },
                            {
                              "wildcard": {
                                "accounts.description.keyword": "*{{smartsearchquerystring}}*"
                              }
                            },
                            {
                              "wildcard": {
                                "accounts.tradeName.keyword": "*{{smartsearchquerystring}}*"
                              }
                            },
                            {
                              "wildcard": {
                                "accounts.referenceId.keyword": "*{{smartsearchquerystring}}*"
                              }
                            }
                          ]
                        }
                      }
                    }
                  }
                ]
              }
            }
          }
        }
      ]
    }
  },
"from" : "{{offset}}",
"size" : "{{limit}}"
}
}

现在,每次如果我想更新搜索模板,我都会通过 Postman 访问相同的端点。我想在我的服务中创建一个方法,例如每当我想更新任何模板只为该方法提供参数并创建或更新模板时。

我怎样才能使用 Java 做到这一点?或有关此的任何建议。

标签: javarestelasticsearchelasticsearch-template

解决方案


您必须在某处将模板保存为 JSON 并向 ES 发送 PUT 请求,并且您的 Endpoint 应该如下所示,而不是您用来搜索的那个:/_template/{{template name or alias}}

您可以使用 OkHttpClient 发送您的请求更多详细信息检查如下: OKhttp PUT 示例


推荐阅读