ElasticSearch 6.4:使用RestHighLevelClient进行映射

时间:2018-08-24 09:07:31

标签: java elasticsearch

Elastic正在更新其文档,以现在将RestHighLevelClient与Java一起使用。它还具有一个映射API:

https://www.elastic.co/guide/en/elasticsearch/client/java-rest/master/java-rest-high-put-mapping.html

现在如何使用该API发出这样的请求?

PUT /test
{
  "settings": {
    "analysis": {
      "filter": {
        "email": {
          "type": "pattern_capture",
          "preserve_original": 1,
          "patterns": [
            "([^@]+)",
            "(\\p{L}+)",
            "(\\d+)",
            "@(.+)",
            "([^-@]+)"
          ]
        }
      },
      "analyzer": {
        "email": {
          "tokenizer": "uax_url_email",
          "filter": [
            "email",
            "lowercase",
            "unique"
          ]
        }
      }
    }
  },
  "mappings": {
    "emails": {
      "properties": {
        "email": {
          "type": "string",
          "analyzer": "email"
        }
      }
    }
  }
}

您是否应该将其拆分为两个请求,然后将此API用于第二个请求? https://www.elastic.co/guide/en/elasticsearch/client/java-rest/master/java-rest-high-indices-put-settings.html

还是RestHighLevelClient用于高性能操作,但是对于初始配置,您可以自由使用RestTemplate(Spring)或任何其他普通的Java Rest Client?

1 个答案:

答案 0 :(得分:2)

如您在文档中所见:

PutMappingRequest request = new PutMappingRequest("twitter"); 
request.type("tweet"); 

您可以使用定义为String的方式设置此请求的有效负载

request.source(
"{\n" +
"  \"properties\": {\n" +
"    \"message\": {\n" +
"      \"type\": \"text\"\n" +
"    }\n" +
"  }\n" +
"}", 
XContentType.JSON);

或包含您的属性甚至是XContentBuilder的地图。

使用低级客户端,您可以执行任何类型的请求,包括您正在寻找的请求。

关于名称,我认为 High 是指以下事实:提供了创建请求的方法(又名可重用性,方便性),而不必强迫自己亲自执行其余请求。您可以随时使用RestTemplate。请注意,HighLevelRestClient在内部使用 apache HttpClient

但是为了代码的可维护性,我会选择一种方法。 (低级别或任何http客户端)。

来自docs(请注意,RestHighLevelClient建立在较低级别的基础上。)

  

低级Java REST客户端内部使用Apache   Http异步客户端发送http请求。这取决于以下   工件,即异步http客户端及其自身的可传递对象   依赖项:

     
      
  • org.apache.httpcomponents:httpasyncclient
  •   
  • org.apache.httpcomponents:httpcore-nio
  •   
  • org.apache.httpcomponents:httpclient
  •   
  • org.apache.httpcomponents:httpcore
  •   
  • commons编解码器:commons编解码器
  •   
  • commons-logging:commons-logging
  •