Elastic正在更新其文档,以现在将RestHighLevelClient与Java一起使用。它还具有一个映射API:
现在如何使用该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?
答案 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