弹力正在更新他们的文档以使用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客户端?
发布于 2018-08-24 09:29:03
正如您在文档中看到的那样:
PutMappingRequest request = new PutMappingRequest("twitter");
request.type("tweet"); 可以使用定义为字符串来设置此请求的有效负载。
request.source(
"{\n" +
" \"properties\": {\n" +
" \"message\": {\n" +
" \"type\": \"text\"\n" +
" }\n" +
" }\n" +
"}",
XContentType.JSON);或者是带有属性的映射,甚至是XContentBuilder。
对于低级客户端,您可以执行任何类型的请求,包括您正在寻找的请求。
关于名称,我认为HighLevel指的是提供方法(也称为可重用性、方便性)来创建请求,而不是强制实现其他请求本身。您可以始终使用RestTemplate。注意,HighLevelRestClient内部使用apache HttpClient。
但是对于代码的可维护性,我会选择一种方法。(低-高级或任何http-客户端)。
从docs (注意,RestHighLevelClient是建立在低级的基础上的)。
低级别的Java客户机内部使用Apache异步客户端发送Http请求。它依赖于以下构件,即异步http客户端及其自身的传递依赖关系:
https://stackoverflow.com/questions/52001039
复制相似问题